方法
1. 用于封装一段特定的逻辑语句
2. 方法尽可能的独立(只干一个事)
3. 方法可以被反复多次调用
4. 有利于代码的重用,提高效率,团队协作开发
5. 方法定义五要素—修饰词 返回值类型 方法名(参数列表){方法体}
6. 方法的参数可有可无,有参更灵活
7. 当方法需要返回值时,设定特定的返回值类型,不需要时,返回值类型为void
8. 返回结果要通过return语句,return后的数据类型必须与返回值类型匹配
-不需要返回值得方法,可以用return语句来结束方法
9. 方法都是用于操作数据的,若所操作的数据比较固定,则需要参数,否则不需要
案例
- 输出考试成绩前三名:给定一个成绩数组,输出前三名,并判断是否是有效成绩
//输出考试成绩前三名
import java.util.Arrays;
public class Rank {
public static void main(String[] args) {
int[] arr={75,91,-23,64,89,95,112}; //指定的成绩集合数组
System.out.print("考试成绩前三名成绩是:");
gen(arr);
}
//生成前三名成绩的方法
public static void gen(int[] arr){
Arrays.sort(arr); //数组arr升序排列
int num=0; //设定有效元素个数
for(int i=arr.length-1;i>=0;i--){ //倒序遍历输出数组arr的元素
if(arr[i]>100||arr[i]<0){ //跳过无效成绩
continue;
}
num++; //有效元素个数+1
System.out.print(arr[i]+",");
if(num==3){ //当够三个的时候就停止循环
break;
}
}
}
}
2.猜字符游戏
//猜字符游戏
import java.util.Scanner;
public class Guessing {
//主方法
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("欢迎参加猜字符游戏(退出请输入exit)");
System.out.print("请选择等级(5,7,9):");
int len=sc.nextInt();
int score=0; //最后得分
int count=0; //猜错次数
if(len==5||len==7||len==9){
char[] a=gen(len); //随机生成的字符组
System.out.println(a);
while(true){ //自造死循环
System.out.println("请输入猜测的字符:");
String str=sc.next().toUpperCase(); //从控制台输入字符串,并转换成大写
if(str.equals("EXIT")){ //比较输入的字符串是否和EXIT一样
System.out.println("欢迎再来!");
break;
}else{
char[] b=str.toCharArray(); //将控制台输入的字符串转换成字符数组
int[] r =check(a,b); //接收俩个数组比较的结果
if(r[1]==5){
score=100*len-10*count; //每个字母100分,猜错一次扣10分
System.out.println("恭喜你!猜对了!得分是:"+score);
break;
}else{
count++; //统计猜错次数
System.out.println("很遗憾!猜错"+count+"次"+",字符猜对"+r[0]+",位置猜对"+r[1]);
}
}
}
}else {
System.out.println("输入错误!");
}
}
//生成随机字符数组方法
public static char[] gen(int len){
char[] a=new char[len];
char[] letters={'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',};
boolean[] flags=new boolean[letters.length]; //开关数组,每个元素默认是false
int index; //letters和flags的下标
for(int i=0;i<len;i++){ //遍历a数组并给其赋值
do{
index=(int)(Math.random()*letters.length); //随机生成letters数组下标
}while(flags[index]==true); //当开关数组中同下标(位置)元素为true时走循环,为了排除随机生成的字符数组有重复字符
a[i]=letters[index]; //赋值
flags[index]=true; //赋过一次值之后,在flags中该下标的元素变为true
}
return a; //返回随机字符数组
}
//比较随机生成数组和玩家输入数组的方法
public static int[] check(char[] a,char[] b){
int[] r=new int[2]; //r[0]代表字符相同个数 r[1]代表位置相同个数
for(int i=0;i<a.length;i++){ //遍历随机生成字符数组
for(int j=0;j<b.length;j++){ //遍历玩家输入字符数组
if(a[i]==b[j]){ //当俩者字符元素相同时
r[0]++; //相同字符个数+1
if(i==j){ //下标相同时
r[1]++; //位置相同个数+1
}
break;
}
}
}
return r; //返回比较结果
}
}