版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
项目需求:
用户从键盘上输入五个字符,和系统随机产生的五个字符(并且产生的5个字母不能相同)进行位置和值的比较,每次输入之后都提示输入的字母和字母的位置的正确的数字,每猜错一次扣100分,最后输出所得的分数。
思路:本项目主要用到3个方法。一个主方法,一个比较的方法,一个随机生成不重复的五个字符。
说明:1.java.util.Scanner中的方法,Scanner scan =new Scanner(System.in); 其中String s=scan.next().toLowerCase();是用来从键盘输入一个字符串,但是toLowerCase()方法是将输入的大写字母转化为小写字母。
2.java中提供的字符串对象.toCharArray();方法是将输入的字符串自动转化为字符数组。
3.Math.random()方法是随机产生0到1之间的数,但是不包括1。
4.int []result数组用来存储字符串比较的结果
5.为了产生不重复的字符,需要设置一个标志数组。
boolean [] flags=new boolean [letter.length];
此方法用于产生5个不重复的字符:
for (int i = 0; i < chs.length; i++) {
do {
index=(int)(Math.random()*(letter.length));
}while(flags[index]==true);
chs[i]=letter[index];
flags[index]=true;
}
//将用户输入的字符和系统随机产生的数进行比较
public static int[] check(char []chs,char[]inputchar) {
//result[0]表示字母正确
//result[1]表示位置正确
int []result=new int[2];
for (int i = 0; i < chs.length; i++) {
for (int j = 0; j < inputchar.length; j++) {
if(chs[i]==inputchar[j]) {
result[0]++;
if(i==j) {
result[1]++;
}
break;
}
}
}
return result;
}
随机生成的不重复的五个字符的方法
//随机生成字符的方法
public static char[] generate() {
char []letter= {'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[letter.length];
char []chs=new char[5];
int index;
for (int i = 0; i < chs.length; i++) {
do {
index=(int)(Math.random()*(letter.length));
}while(flags[index]==true);
chs[i]=letter[index];
flags[index]=true;
}
return chs;
}
最终的代码:
package Day06;
import java.util.Scanner;
//猜字符小游戏
public class GuessNumber {
public static void main(String[] args) {
System.out.println("欢迎来到猜字符游戏!");
char []chs=generate();
System.out.print(chs);
System.out.println();
int count=0;
System.out.println("猜字符游戏现在开始?????:");
while(true){
Scanner scan=new Scanner(System.in);
String s=scan.next().toLowerCase();
if(s.equals("exit")) {
System.out.println("谢谢你的使用!");
break;
}
char []inputchar=s.toCharArray();//此方法用于将用户输入的字符串转换为字符数组
int result[]=check(chs,inputchar);
if(result[1]==chs.length) {
int score=100*chs.length-100*count;
System.out.println("恭喜你,猜对了!");
System.out.println("你的总共得分是:"+score);
break;
}else {
count++;
System.out.println("你的字母对了"+result[0]+"个"+"你输入的位置对了"+result[1]+"个");
}
}
}
//将用户输入的字符和系统随机产生的数进行比较
public static int[] check(char []chs,char[]inputchar) {
//result[0]表示字母正确
//result[1]表示位置正确
int []result=new int[2];
for (int i = 0; i < chs.length; i++) {
for (int j = 0; j < inputchar.length; j++) {
if(chs[i]==inputchar[j]) {
result[0]++;
if(i==j) {
result[1]++;
}
break;
}
}
}
return result;
}
//随机生成字符的方法
public static char[] generate() {
char []letter= {'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[letter.length];
char []chs=new char[5];
int index;
for (int i = 0; i < chs.length; i++) {
do {
index=(int)(Math.random()*(letter.length));
}while(flags[index]==true);
chs[i]=letter[index];
flags[index]=true;
}
return chs;
}
}