将循环中的扫描仪值初始化为数组

时间:2015-05-10 19:04:33

标签: java arrays random

我创建了一个游戏,用户猜到了一个0-100创建的随机数。如果他们的猜测太高,系统会告诉他们猜测更高,如果他们的猜测低于实际数字则相同。但是,我需要按照它们输入的顺序将每个猜测初始化为一个数组。我知道如何初始化数组,但我需要帮助将播放器的猜测存储到数组中。这是我的代码,感谢任何帮助/建议!

public static void randomNumGame(){
    // begin of method

    Scanner numbers = new Scanner(System.in);
    Random randomGenerator = new Random();
    int[] guess;
    guess = new int[6];
    guess[0]=0;
    guess[1]=0;
    guess[2]=0;
    guess[3]=0;
    guess[4]=0;
    guess[5]=0;

    System.out.println("running ...");
    int thisRandomInt = randomGenerator.nextInt(100);
    int attempt = 0;
    boolean done = false;

    while(!done){
        System.out.print("Guess a number from 0 to 100 : ");

        int myGuess = numbers.nextInt();
        attempt++;

        if(myGuess == thisRandomInt && attempt <= guess.length){
            done = true;
            System.out.println("You won. It took " + attempt+ " times to guess my number.");
        }else if (attempt >= guess.length){
            System.out.println("Game Over. My number is "+thisRandomInt );
            done = true;
        }else if (myGuess < thisRandomInt){
            System.out.println("Guess a higher number");
        }else{
            System.out.println("Guess a lower number");
        }
    }
}// end of method

2 个答案:

答案 0 :(得分:1)

if(myGuess == thisRandomInt && attempt <= guess.length){
    done = true;
    System.out.println("You won. It took " + attempt+ " times to guess my number.");
}else if (attempt >= guess.length){
    System.out.println("Game Over. My number is "+thisRandomInt );
    done = true;
}else if (myGuess < thisRandomInt){
    guess[attempt-1] = myGuess;
    System.out.println("Guess a higher number");
}else{
    guess[attempt-1] = myGuess;
    System.out.println("Guess a lower number");
}

答案 1 :(得分:1)

您不需要使用零显式初始化任务数组。除此之外,你可以这样做:

    System.out.print("Guess a number from 0 to 100 : ");

    int myGuess = numbers.nextInt();
    guess[attempt++] = myGuess;

此外,代替done标记,您可以调用break而不是声明标记true - 它将转义循环。