我需要建议在java中修复我的HighLow代码

时间:2015-01-24 17:54:24

标签: java

我是一个相当新的java和我无法让它循环?代码工作正常,只是在用户猜对了代码停止后。

这是我的代码:

import java.util.Random;
import java.util.Scanner;

public class Chapter3HighLow {
    public static void main (String[] args) {

        Scanner input = new Scanner(System.in);
        Random random = new Random(); //gives random numbers each time
        int correctNum = random.nextInt(100);
        int NumberOfTries = 0; // tells how many guesses it took

        while (true) {  

            System.out.println("Hi! Please enter a number between 1-100! (if you would like to quit, please press -1)");
            int guess1 = input.nextInt();
            NumberOfTries++; //user enters their guesses

            if (guess1 == (-1)) {
                break; //breaks the loop if the user enters -1
            }

            if(guess1 < correctNum){
                System.out.println("The number inserted is too low!");

            }
            else if(guess1 > correctNum){
                System.out.println("The number inserted is too high!");

            }
            else if(guess1 == correctNum){
                System.out.println("The number you entered was Correct!!");
                System.out.println("It took you " + NumberOfTries + " tries"); // Tells how many tries it  took
            }
        }       
    }
}

3 个答案:

答案 0 :(得分:1)

我并不完全确定你所问的是什么,但是,从我能理解的内容来看,你希望让你的游戏不断循环直到用户想要停止游戏。所以你要找的是一种方法,让用户可以选择是否想再次玩。我的建议是使用boolean。以下代码为您的示例演示了这一点:

import java.util.Random;
import java.util.Scanner;
public class Chapter3HighLow {
private static boolean playAgain(){
    Scanner sc = new Scanner(System.in);
    String usrInput = "";
    System.out.println("Play again? (Y/N)");
    usrInput = sc.next();
    if(usrInput.equalsIgnoreCase("Y")){
        return true;
    }
    else if(usrInput.equalsIgnoreCase("N")){
        return false;
    }
    else{
        return false;
    }
}
public static void main (String[] args) {
    Scanner input = new Scanner(System.in);
    Random random = new Random(); //gives random numbers each time
    int correctNum = random.nextInt(100);
    int NumberOfTries = 0; // tells how many guesses it took
    int guess1 = 0;
    do{
        do{
            System.out.println("Please guess a number between 1-100!");
            guess1 = input.nextInt();
            NumberOfTries++; //user enters their guesses
            if (guess1 == (-1)) {
                break; //breaks the loop if the user enters -1
            }
            if(guess1 < correctNum){
                System.out.println("The number inserted is too low!");
            }
            else if(guess1 > correctNum){
                System.out.println("The number inserted is too high!");
            }
            else if(guess1 == correctNum){
                System.out.println("The number you entered was Correct!!");
                System.out.println("It took you " + NumberOfTries + " tries"); // Tells how many tries it  took
            }
        }while(guess1 != correctNum);
        correctNum = random.nextInt(100);
        NumberOfTries = 0;
    }while(playAgain() == true);
}
}

详细了解方法here

详细了解boolean数据类型here

答案 1 :(得分:0)

您的最终else似乎缺少break。像

else if(guess1 == correctNum){
    System.out.println("The number you entered was Correct!!");
    System.out.println("It took you " + NumberOfTries + " tries");
    break; // <-- add this.
}

您可能会成为while条件。像,

int guess1 = -1;
while (guess1 != correctNum) {
    System.out.println("Hi! Please enter a number between 1-100! "
        + "(if you would like to quit, please press -1)");
    guess1 = input.nextInt();
    if (guess1 == (-1)) {
        break;
    }
    NumberOfTries++;

    if (guess1 < correctNum) {
        System.out.println("The number inserted is too low!");
    } else if (guess1 > correctNum) {
        System.out.println("The number inserted is too high!");
    } else if (guess1 == correctNum) {
        System.out.println("The number you entered was Correct!!");
        System.out.println("It took you " + NumberOfTries + " tries");
    }
}

答案 2 :(得分:-1)

猜对了之后真的停止了吗?
enter image description here