2 ccccalculator CCCCalculator 于 2016.04.06 02:07 提问

猜字母小游戏,代码到底是哪里错了?

程序为什么就仅仅执行一个“游戏开始。。。”就不走了?到底是哪里错了?求解答

代码如下:
import java.util.Random;
import java.util.Scanner;
public class GuessChar {
public static void main(String[] args) {
int count = 0 ;//猜的次数
Scanner scan = new Scanner(System.in);
System.out.println("游戏开始...");

    //1.生成随机数组
    char[] chs = generate();
    System.out.println("猜吧!");
    while(true){
        //接收用户收入的字符串
        String str = scan.next().trim().toUpperCase();
        if ("EXIT".equals(str)) {
            break;
        }
        //将用户输入的字符串转化为数组
        char[] input = str.toCharArray();
        //对比判断
        int[] result = check(chs, input);
        //判断什么时候退出
        if (result[0] == 5) {
            int score = 5*100 - count*10;
            System.out.println("恭喜你猜对了,总分"+score);
            break;
        }else {
            System.out.println("没猜对,字符对"+result[1]+"个位置对"+result[0]+"个");
            count++;
        }

    }
    System.out.println("GuessChar>谢谢尝试,再见!");
    scan.close();
}


//生成字符数组方法
//返回值为char[]:随机生成的字符数组
public static char[] generate(){
    char chs[] = new char[5];

    Random ran = new Random();

    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{
        //生成0-25的数字
        index = ran.nextInt(26);
        }while(flags[index] = true);

        //赋值
        chs[i] = letters[index];
        flags[index] = true;
    }
    return chs;
}


//判断猜测的结果
//chs:随机生成的字符数组
//input是用户输入的字符数组
//返回值类型int[]:猜的结果,猜对几个,位置对几个
public static int[] check(char[] chs,char[] input){
    //arr[0]存字符对
    //arr[1]存位置对
    int arr[] = new int[2];//默认初值为0

    //两层循环。用于判断字母和位置是否正确
    for (int i = 0; i < chs.length; i++) {  //控制随机的字符
        for (int j = 0; j < input.length; j++) {  //控制用户输入的字符
            if (chs[i] == input[j]) {
                arr[0]++;  //字符对了所以++
                if (i == j) {
                    arr[1]++;//位置对了 所以++
                }
                break;//此break只是跳出内层循环
            }
        }
    }

    return arr;

}

}
不提示编译错误 运行结果是
图片说明

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.06 04:26

generate 死循环了

while(flags[index] = true
->
while(flags[index] == true

CCCCalculator
CCCCalculator 感谢您的解答,我豁然开朗。手残少打一个= 把逻辑判断变成赋值了。。 感谢感谢
2 年多之前 回复
CCCCalculator
CCCCalculator 感谢您的解答,我豁然开朗。手残少打一个= 把逻辑判断变成赋值了。。 感谢感谢
2 年多之前 回复
u011225629
u011225629   2016.04.06 08:42

Scanner scan = new Scanner(System.in);

之后应该输入字符串吧!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java_猜字母游戏
java猜字母游戏 猜字母游戏:用户指定游戏难度(5、7、9),程序生成随机不重复字母。用户猜错,提示用户对的字母数量和对的位置数量。 import java.util.Scanner; public class GuessWord { public static void main(String[] args) { Scanner scan=new Scanner(System.in
简单java程序--猜字母游戏
package test;import java.util.Scanner;//猜字符游戏public class GuessingGame {public static void main(String[] args) {Scanner scan = new Scanner(System.in);char[] chs = generate(); //获取随机生成的字符数组for(int i=0;
Java猜字母游戏源码
系统随机生成五位的字符,人来猜字母,每次猜测都会提示字母对个数和位子对个数,直至猜中,中间可以直接退出系统,也可以直接取得答案。
JSP简单练习-猜字母游戏
猜字母游戏 下面,我们一起来玩一个游戏:猜字母游戏 游戏规则:电脑会随机自动生成一个字母,请你猜出这个字母是什么。字母忽略大小写。 <% String charString=new String("abcdefghijklmnopqrstuvwxyz"); int charNumber=((int)(Math.random()*100)+1)%26-1; Char
猜字符小游戏中的细节问题以及算法
游戏要求: 其游戏规则为:程序随机产生5个(7个或9个)按照一定顺序排列的字符(大写小写字母或数字)作为猜测的结果,  * 由玩家来猜测此字符串。玩家可以猜测多次,每猜测一次,则由系统提示结果。  * 如果猜测的完全正确,则游戏结束,计算玩家的游戏得分并输出;  *如果没有猜对,则提示猜测的结果,如猜对了几个字符,以及猜对了几个字符的位置等信息,并提示玩家游戏继续。
用java编写的一个简单的猜字母游戏
import java.util.Scanner; public class GuessingGame { // 主方法 public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("欢迎来到猜字母游戏,请阅读游戏规则\n\n"); rules
Java之猜字母小游戏
Java之猜字母小游戏 20150806 问题 有猜字母游戏,其游戏规则为:程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串。玩家可以猜测多次,每猜测一次,则由系统提示结果。如果猜测的完全正确,则游戏结束,计算玩家的游戏得分并输出;如果没有猜对,则提示猜测的结果,如猜对了几个字符,以及猜对了几个字符的位置等信息,并提示玩家游戏继续。 本案例要求使用交互
教你如何写js小游戏----打字母
从上面掉落字母键盘输入字母,正确通过,错误下一个字母知道错几个 写这个小游戏知道几个关键的东西 1、 onkeydown事件,当鼠标按下时 2、onclick事件,点击 3、var a=(Math.random()*500);          Math.random()随机产生0-1的小数 4、String.fromCharCode(65+(a*100)%26)       将数
猜字母游戏java源代码
import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class GuseeLetter { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
C语言编写的猜单词游戏
猜字游戏 (一)程序设计要求 (1)功能要求 ①玩家每次只能猜一个字母;不得多次猜测同一个字母;玩家只能猜错有限次,否则游戏失败; ②猜错的字母将被记录下来;每次猜测后,游戏应显示出当前猜出的残缺单词,以及当前猜错的所有字母,和剩下的猜错的机会; ③假设玩家猜的字母在单词中,单词中所有的该字母将被视为已猜出,例如:如果原单词是apple,我们猜出了p,则程序应显示当前猜出的残缺单词为-pp--; ④在实现上述功能的基础上,考虑增加时间的限制或者积分方式。 (2)界面友好 可操作性强,输入信息符合要求。 (二)程序设计建议 (1)数据结构 可使用字符串数组存储每次猜对的单词模式,如: char *wordAfterGuess[]; 可使用字符数组存储猜错的字母,如: char wrongGuess[255]; (2)程序模块及功能 ①初始化模块:设定单词内容、允许猜错次数等; ②判断模块:判断用户是否猜对,记录成功/失败信息; ③显示模块:显示残缺单词; ④输入/定时模块:读入用户输入的字母,控制用户剩余可用时间; (3)额外要求:如果学有余力,可将备猜单词事先存入一个文件,在初始化模块从文件中随机抽取一个单词给用户猜测。 (三)需要掌握的知识 (1)字符串的操作 (2)文件的读写方法