项目要求:
系统自动生成5个不重复字母,用户来猜,若猜对了给出提示和分数,若没猜对,则说明猜对的字符数以及有多少个字符的位置是正确的。用户想结束游戏输入EXIT即可。
以这个项目为例学习开发一个项目的步骤
- 分析需求,设计数据结构:变量
char[] chs; //随机字符数组
char[] input; //用户输入的字符数组
int[] result; //对比的结果
int score; //得分 - 功能分块,设计程序结构:方法
- 主方法
public static void main(String[] args){
//…
} - 生成随机字符数组chs
public static char[] generate(){
char[] chs = new char[5];
//…
return chs;
} - 对比:随机字符数组chs与用户输入的字符数组input
public static int[] check(char[] chs,char[] input){
int[] result = new int[2];
//…
return result;
}
- 设计算法:方法体
String str = “hello”;
1)将字符串转换为字符数组:
char[] input = str.toCharArray();
2)将字符串转换为大写字母:
str = str.toUpperCase();
将字符串转换为小写字母:
str = str.toLowerCase();
3)判断字符串内容是否相等:
if(str.equals(“EXIT”)){
}
该项目用到的小知识:
- 生成的字符数组不能重复,可以声明一个26位的标记数组(boolean),每使 用一个字符就把它对应的标记数组的元素值改变。
- 取随机数,要取[m,n]之间的整数:(int)(Math.random()*(n-m+1)+m)
原理:
Math.random--------------------------[0,1)
*(n-m+1)--------------------------------[0,n-m+1)
取整--------------------------------------[0,n-m]
+m----------------------------------------[m,n] - 字符串类型的几个操作
- 比较值,例:if(str.equals(“exit”));
- 转成大写:str.toUpperCase();
- 转成小写:str.toLowerCase();
- 转成字符数组:str.toCharArray();
- 打印字符型数组:system.out.println(charArr)
代码
package mypackage;
import java.util.Arrays;
import java.util.Scanner;
public class GuessingGametest {
public static void main(String[] args) {
//System.out.println(Arrays.toString(generate(5)));
//System.out.println(generate(5));
Scanner scan = new Scanner(System.in);
System.out.println("游戏开始");
int