Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取数字直到满足条件_Java_While Loop_Java.util.scanner - Fatal编程技术网

Java 读取数字直到满足条件

Java 读取数字直到满足条件,java,while-loop,java.util.scanner,Java,While Loop,Java.util.scanner,我试图要求用户继续键入数字,直到他们键入-1,一旦他们这样做,代码会说谢谢,再见!我现在有点卡住了,因为我的循环是无限循环,我试图不使用迭代来解决它。这就是我所拥有的 Scanner reader = new Scanner(System.in); System.out.println("Type numbers: "); int num = Integer.parseInt(reader.nextLine()); while (num < -1 || num > -1) {

我试图要求用户继续键入数字,直到他们键入-1,一旦他们这样做,代码会说谢谢,再见!我现在有点卡住了,因为我的循环是无限循环,我试图不使用迭代来解决它。这就是我所拥有的

Scanner reader = new Scanner(System.in);
System.out.println("Type numbers: ");
int num = Integer.parseInt(reader.nextLine());   
while (num < -1 || num > -1) {
    System.out.println(num);   
        if (num == -1) {
        System.out.println("Thank you and see you later!");
        break;
    }

}
Scanner reader=新的扫描仪(System.in);
System.out.println(“类型号:”);
int num=Integer.parseInt(reader.nextLine());
而(num<-1 | num>-1){
系统输出打印项数(num);
如果(num==-1){
System.out.println(“谢谢,待会儿见!”);
打破
}
}

您需要读取循环中的输入。您只需执行一次(在进入循环之前),因此num的值永远不会更改。此外,您还可以使用
while(num!=-1)

所以最终,你会想要这样的东西:

Scanner reader = new Scanner(System.in);
System.out.println("Type numbers: ");
int num = 0;
while (num != -1) {
    num = Integer.parseInt(reader.nextLine());   

        if (num == -1) {
            System.out.println("Thank you and see you later!");

    }else{
       System.out.println(num);   
    }

}
请尝试以下代码:

Scanner reader = new Scanner(System.in);
int num = 0;
System.out.println("Type numbers: ");
while(true){
    //get user input
    num = Integer.parseInt(reader.nextLine());
    if(num == -1){
        System.out.println("Thank you and see you later!");
        break;
    }
}

您的循环是无限的,因为您使用了最初输入的相同的
num
值。它在循环中从不改变,也没有机会改变,明白吗?@SashaSalauyou是的,我知道这就是问题所在,我只是不知道你能把Integer.parseInt(reader.nextLine())放进去;就其本身而言,我认为您必须始终将其分配给一个变量。如果您在条件满足后立即中断,则无需在
while()
@Chris中检查它,因为您每次输入一个数字时,它实际上并不经过循环,并且0总是在输入的数字之后打印,因为num=0,并且从不打印changes@Nabz你说得对。我做了一个编辑来清理它。这是可行的,但我希望“类型编号:”在输出中只显示一次,我有这个,但我不想让类型编号反复显示,只是在循环之前放上“类型编号”。