程序内容:程序随机产生5个按照一定顺序排列的字符作为猜测的结果,玩家可猜多次,每猜一次由系统提示结果,若猜测完全正确,游戏结束,计算得分,如果没有猜对,由系统提示猜对了都少个字母,以及猜对了多少个字母的位置的信息,并提示玩家继续。
我的问题:我的程序编译木有错,但在控制台输入猜测值后就没反应了。第一次在这里提问,真的很迷惑,程序不长,大神们帮忙看下吧!谢谢喽
package fundamental;
import java.util.Scanner;
public class GuessAlphabetGame {
@SuppressWarnings("null")
public static void main(String[] args) {
int count = 0 ;//记录猜字母的次数
char [] input = null ;//用于保存用户猜测的数据
char [] chs = null ; // 用于保存随机生成的字母
int [] result = new int [2];//用于保存判断的结果
// Scanner scanner = new Scanner(System.in);
System.out.println("GuessingGame>欢迎尝试猜字母游戏!");
//表示猜测的字符串
// generate();
System.out.println("GuessingGame>游戏开始,请输入你所猜的5个字母序列:(exit——退出)");
generate1();
while (true){
// String inputStr = scanner.next().trim().toUpperCase();
if("EXIT".equals(generate2())){
System.out.println("GuessingGame>谢谢你的尝试,再见!");
break;
}
input = generate2().toCharArray();
result = check(chs,input);
if (result[0]==chs.length){
int score = 100*chs.length-count*10;
System.out.println("GuessingGame<恭喜你猜对了!你的得分是:"+score);
break;
} else{
count++;
System.out.println("GuessingGame>你猜对"+result[1]+"个字符,其中"+result[0]+"个字符的位置正确!(总次数="+count+"exit——退出)");
}
}
// scanner.close();
}
/**
* 随机生成需要猜测的五个字母
*
* 存储随机字符的数组
*/
public static char[] generate1(){
char[] chs = new char[5];
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];
for (int i=0;i<chs.length;i++){
int index;
do{
index = (int)Math.random()*(letters.length);
} while (flags[index]);//判断生成的字符是否重复,若为true则重新选取,若为false则往下进行
chs[i] = letters[index];
flags[index] = true;
}
return chs;
}
public static String generate2(){
Scanner scanner = new Scanner(System.in);
String inputStr = scanner.next().trim().toUpperCase();
return inputStr;
}
/**
* 比较玩家输入字母序列和生成的字母序列,逐一比较字符及其位置,并记载比较结果
*
* @param chs
* 程序生成的字符序列
* @param input
* 玩家输入的字符序列
* @return 存储比较结果。返回值int数组的长度为二
* 索引为0的存放完全猜对的字母个数(字符和位置均正确)
* 索引为1的位置存放猜对的字母的个数(字符正确但位置不正确)
*/
public static int[] check (char[] chs , char[] input){
int [] result = new int[2];//构建result数组,存储比较结果
// input = generate2().toCharArray();
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;
}
}