方法总结:
方法的作用
1.方法实现封装特定的逻辑功能,方法之间互相独立,一个方法一般只完成一件独立的事,遵循单一职责原则。
2.方法可以多次调用,避免大量代码重复,有利于复用,维护,团队协作开发。
方法的类型
1.方法分为有参数和无参数,有返回值和无返回值两种
无参数的方法参数列表为空
无返回值的方法定义时的方法类型为void
方法的定义
方法的定义的一般形式为:
修饰词 返回类型 方法名(参数列表){
//方法体
}
例如:
public static void eat() {
//方法体
}
public static char[] generate(int level){
//方法体
}
public static 为修饰词,void和char[]分别表示没有返回值和返回一个char[]型的变量,()圆括号里面的为参数,花括号里面为方法执行的方法体。
方法的调用
无返回值的:方法名(有参传参);
有返回值的:数据类型 变量名=方法名(有参传参);
如:
eat();
char[] b=generate(4);
return关键字
1.return 值;//结束方法,返回结果给调用方法
2.return;结束方法
猜字符小游戏
这个小游戏定义了一个随机生成字符串的方法generate()和判断字符对错的check()方法
package day06;
import java.util.*;
public class Guessing {
/*猜字符小游戏
* 系统随机生成数个字母,生成字母个数由玩家选择
* 玩家随意输入几个字母
* 系统判断正确的个数,并统计数据,计算得分
* 猜字过程输入exit则退出游戏
*
* */
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int level;
do{
System.out.println("请选择等级5、7、9:");
level=scan.nextInt();
}while(level!=5&&level!=7&&level!=9);
char[] gen=generate(level);
int sroce;
int count=0;
for(int i=0;i<gen.length;i++){
System.out.print(gen[i]);
}
System.out.println();
while(true){
System.out.println("猜吧!");
String str=scan.next().toUpperCase();
if(str.equals("EXIT")){
System.out.println("下次再来吧!");
break;
}
char[] imput=str.toCharArray();
int[] result=check(gen,imput);
if(result[1]==gen.length){
sroce=gen.length*100-count*10;
System.out.println("恭喜你,猜对了!得分为"+sroce);
break;
}else{
count++;
System.out.println("字符对了"+result[0]+"个,位置对了"+result[1]+"次");
}
}
scan.close();
}
public static char[] generate(int level){
char[] chs=new char[level];
char[] letters=new char[]{'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];
for(int i=0;i<chs.length;i++){
int index;
do{
index=(int)(Math.random()*26);
}while(flags[index]);
chs[i]=letters[index];
flags[index]=true;
}
return chs;
}
public static int[] check(char[] chs,char[] imput){
int[] result=new int[2];
for(int i=0;i<chs.length;i++){
for(int j=0;j<imput.length;j++){
if(chs[i]==imput[j]){
result[0]++;
if(i==j){
result[1]++;
break;
}
}
}
}
return result;
}
}