qq_25350849 2016-06-20 10:56 采纳率: 0%
浏览 1323

今天用java写了一个猜字母的小程序,编译没有错,可运行没结果。好迷惑,大神们,小的献上膝盖了。

程序内容:程序随机产生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;
}

}

  • 写回答

1条回答 默认 最新

  • Cceking 2016-06-20 12:46
    关注

    修改generate2

    public static String generate2(){
        Scanner scanner = new Scanner(System.in);
        String inputStr = scanner.nextLine().trim().toUpperCase();
            scanner.close();
        return inputStr;
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作