java - 显示的消息不正确

标签 java

当用户输入的数字超出 (1 - 6) 范围时,我无法使该程序显示消息“数字超出范围”。我尝试了不同的代码方式,但我不知道我做错了什么。

public static void main(String[] args) {

    int guess = 0;
    int tries = 3;
    Scanner input = new Scanner(System.in);
    Random ran = new Random();
    int diceNumber = ran.nextInt(6)+1;
    System.out.println(diceNumber);

    System.out.println("Insert a number between 1 and 6 : you have " + tries + " tries.");
    guess = input.nextInt();

    while((tries >1 && (guess <7 || guess>0))) {
        tries--;
        System.out.println("Incorrect Number, you have " +tries+ " more tries.");
        guess = input.nextInt();

    }if(guess >=7 || guess<=0 && (tries >1)){
        --tries;
        System.out.println("Number out of range, try again; you have " + tries + " more tries.");
        guess = input.nextInt();    

    } if(tries ==0 || guess != diceNumber)  {
        System.out.println("You Lose!!");

    } else if(guess == diceNumber){
        System.out.println("You Win!!");
    }
}

最佳答案

您需要在 while 循环开始时放置检查输入是否有效的条件,目前,只有在结束前面的 while 循环时,所有尝试都用尽后才会检查它。

此外,您应该将 while 循环条件从 (tries >1 && (guess <7 || guess>0)) 更改为至(tries > 1 && guess != diceNumber) ,因为如果输入的数字超出范围,您可能不想退出循环。

代码-

public static void main(String[] args) {

    int guess = 0;
    int tries = 3;
    Scanner input = new Scanner(System.in);
    Random ran = new Random();
    int diceNumber = ran.nextInt(6)+1;
    System.out.println(diceNumber);

System.out.println("Insert a number between 1 and 6 : you have " + tries + " tries.");
guess = input.nextInt();


while((tries >1 && guess != diceNumber)) {
    if((guess >=7 || guess<=0) && (tries >1)){
        --tries;
        System.out.println("Number out of range, try again; you have " + tries + " more tries.");
        guess = input.nextInt();
    }
    else {
        tries--;
        System.out.println("Incorrect Number, you have " +tries+ " more tries.");
        guess = input.nextInt();
    }

}

if(tries ==0 || guess != diceNumber)  {
    System.out.println("You Lose!!");

} else if(guess == diceNumber){
    System.out.println("You Win!!");
}

}

关于java - 显示的消息不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182366/

相关文章:

java - 如何调用返回 tuple[] 的函数

java - Guava:具有逆插入的 nodeOrder 的 MutableGraph

java - 找到 APK : LICENSE when deploying to my phone 的重复文件

java - 具有自定义 x 轴值的动态 JFreeChart

java - 在 AMI 4.x 上运行 EMR 作业之前,如何从/usr/lib/hadoop/lib 中删除文件?

java - java加解密密码用什么API和算法

java - 组合框中的项目

java - 如何使用 JSP 连接 MySQL 数据库并检索和检查数据?

JAVA矩阵程序只打印0并且不接受输入

java - 客户端服务器android上的数据库