扫描仪需要输入两次

时间:2015-08-04 09:08:32

标签: java error-handling

我确实看到了像我这样的其他问题,但我的程序却完全不同,所以我无法弄清楚问题。基本上,当我被要求使用此程序输入代码时,需要输入两次。我无法弄清楚原因。

任何人都知道我做错了什么?我确信这很简单,我很遗憾。

package prac4;
import java.util.Scanner;

public class PrintNums {
    public static void main(String[] args) {
    int number=1;
    Scanner sc = new Scanner(System.in);
    System.out.println("What number should I count to?");

    while (sc.nextInt()<0){
        System.out.println("Please enter a positive integer: ");
        if(sc.nextInt()>0){
        number = sc.nextInt();
    }
        }
    number = sc.nextInt();
    sc.close();


    System.out.println(number);
}

}

2 个答案:

答案 0 :(得分:1)

每次拨打sc.nextInt()程序时,程序都会挂起并等待您的输入。您只需拨打sc.nextInt()一次,每个周期只分配number一次,然后检查您的情况:

    while ((number = sc.nextInt()) < 0) {
        System.out.println("Please enter a positive integer: ");
    }
    System.out.println(number);

答案 1 :(得分:1)

你要输入2次(sc.nextInt()),所以如果你想获得一次值,你应该调用sc.nextInt()一次。你可以改变下面的代码片段。

package prac4;
import java.util.Scanner;

public class PrintNums {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number=sc.nextInt();
System.out.println("What number should I count to?");

while (number<0){
    System.out.println("Please enter a positive integer: ");

    number = sc.nextInt();
}

sc.close();


System.out.println(number);
}
}