Java方法的概念
前言
各种语言都有方法的概念,有的语言称其为函数(如:C语言、JavaScript等),或称其为过程。
方法的含义
1、方法用于封装一段特定的逻辑功能;
2、方法可以在程序中反复被调用;
3、方法可以减少代码重复,便于程序的维护。
方法的定义
定义方法的五个要素:修饰词、返回值类型、方法名、参数列表、方法体
ex:
public static int sum (int num1 , int num2){
//方法体
}
其中,public 、static 为修饰词;int 为返回值类型;sum 为方法名;int num1和int num2 为参数列表
方法在声明时必须指定返回值的类型,若方法不需要返回数据,声明为void;若方法需要返回数据,声明为特定数据类型。
理解练习-猜字母游戏,实现游戏等级设定
编程思路
1、设计数据结构 - 变量
ex:
分数:int score;猜错次数:int count;
随机生成数组:char [ ] chs;用户输入数组:char [ ] input;
结果:int [ ] result;
2、设计程序结构 - 方法
ex:
1、随机生成字符数组
2、用户输入字符与生成字符对比
3、main()
3、设计实现 - 方法的实现
package myMethod;
import java.util.Scanner;
public class GuessingGame {
public static void main(String[] args){
//玩家猜正确次数
int count = 0;
//用户猜测数据
char[] input = new char[5];
input = null;
//判断结果
int[] result = new int[2];
Scanner scanner = new Scanner(System.in);
System.out.println("GuessingGame>欢迎尝试猜字母游戏!");
while(true){
System.out.println("GuessingGame>请输入游戏级别(5,7,9)");
int inputInt = scanner.nextInt();
if(inputInt==5||inputInt==7||inputInt==9){
//所猜字符
char[] chs = stringArrys(inputInt);
System.out.println("GuessingGame>游戏开始!请输入你所猜"+inputInt+"个字符序列:(exit-退出)");
//多次输入,while循环
while(true){
String inputStr = scanner.next().trim().toUpperCase();//输入字符序列并大写
if("EXIT".equals(inputStr)){
System.out.println("GuessingGame>exit>游戏退出!");
break;
}
input = inputStr.toCharArray();//将字符串转为字符数组;
//获取对比结果
result = check(chs,input);
if(result[0]==chs.length){
//全对
int score = 100-count*20;
System.out.println("GuessingGame>恭喜您全对了!您的得分是:"+score);
break;
}else{
count++;
System.out.println("GuessingGame>您猜对了"+result[1]+"个字符,其中"+result[0]+"个字符位置正确!"+"总次数:"+count+"(exit-退出)");
}
}
}
}
}
//随机生成字符数组
public static char[] stringArrys(int inputInt){
char [] stringArrys={'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[stringArrys.length];//创建判断重复标准,且初始化为false
char[] chs = new char[inputInt];
for(int i=0;i<chs.length;i++){
int index;
do{
index = (int)(Math.random()*stringArrys.length);
}while(flags[index]);//判断生成字符是否重复;
chs[i]=stringArrys[index];
flags[index]=true;
}
return chs;
}
//对比方法
public static int[] check(char[] chs,char[] input){
int[] result = new int[2];
for(int i=0;i<input.length;i++){
for(int j=0;j<chs.length;j++){
if(input[i]==chs[j]){ //判断字符正确
result[1]++; //正确字符个数
if(i==j){ //判断位置是否正确
result[0]++; //正确位置个数
}
break;
}
}
}
return result;
}
}