繁体   English   中英

如何读取两个数字之间的数字?

[英]How can I read a number in between 2 numbers?

我对Java相当陌生,我正在尝试编写一个小程序,要求用户输入0-4之间的整数。 到目前为止,我已经写了这篇文章,但是似乎没有用! 谁能告诉我我哪里错了?

import java.util.Scanner;
public class GameCharSelect {

    public static void main(String[] argh){
        int myChar;
        Scanner in = new Scanner(System.in);
        {
            System.out.print("choose a player: ");
            myChar = in.nextInt();
        }while(myChar>0 && myChar<4);

        System.out.println("--------");
        System.out.println("you chose "+ myChar);

    }

}

现在,我希望该数字为1,2或3,否则它将一直循环播放直到用户输入其中一个,但程序此时接受任何数字。 我哪里错了?

您在循环中缺少do关键字。 另外,您的条件也应被撤销:

public static void main(String[] argh) {
    int myChar;
    Scanner in = new Scanner(System.in);
    do {
        System.out.print("choose a player: ");
        myChar = in.nextInt();
    } while (myChar <= 0 || myChar >= 4);

    System.out.println("--------");
    System.out.println("you chose " + myChar);

}

您的while条件不正确。
要检查,如果char比0大于4 更低的,如果是,它会再次进行循环,当你以后有什么是oposite。
更改语句来检查,如果myChar大于1小于3 更高。
myChar < 1 || myChar > 3

do-while的开头,您还缺少一个do

您在代码中遇到两个问题:

  • 您以错误的方式放置了while,您应该在{...}之前放置一个do-while语句。
  • 您还希望在输入错误的数字(<1或> 3)时运行循环,而不是在输入正确的数字(1至3之间)时运行循环。因此,您还需要更改表达式。

我的代码将是这样的:

import java.util.Scanner;
public class GameCharSelect {

    public static void main(String[] argh){
        int myChar;
        Scanner in = new Scanner(System.in);
        do{
            System.out.print("choose a player: ");
            myChar = in.nextInt();
        } while(myChar<1 || myChar>3);

        System.out.println("--------");
        System.out.println("you chose "+ myChar);

    }

}

您的循环应如下所示

while (true) {
    System.out.print("Choose a player: ");
    myChar = in.nextInt();
    if (myChar > 0 && myChar < 4) {
        break; // out of the loop
    }
}

那是你唯一的break; 如果扫描的值是1、2或3,则超出此范围。


@ Ali, while(true)方法非常好。 实际上,在实际代码中看到它们比在do-while()中见得多。 收到的否决票是主观的,并且基于个人的编码样式偏好,而不是基于答案正确性的指示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM