簡體   English   中英

Scanner method.hasNextInt() 和 if 語句 - 只工作 1 次。 對於下一個循環 - 自動(不等待任何輸入)給出 false

[英]Scanner method .hasNextInt() and if statement - works only 1 time. For next loop - automatically (didn't wait any input) gives false

我嘗試進行輸入檢查(需要使用掃描儀獲取 3 個數字)。 在此之前,我在另一項任務中使用了類似的方法( .hasNext(int) )——一切正常。 在這種情況下,它不起作用。 第一個“while”循環正常工作,在第二個循環上.hasNextInt()返回 false 並循環循環 - 沒有機會輸入數據。

boolean num1IsInt = false;
boolean num2IsInt = false;
boolean num3IsInt = false;
int scaicius1 = 0;
int scaicius2 = 0;
int scaicius3 = 0;

System.out.println("Įveskite 3 skaičiai, po viena after each press enter");

while (!num1IsInt) { //check first number is int
    Scanner sc1 = new Scanner(System.in);
    System.out.println("(1)Įveskyte pirmas skaicius");
    if (sc1.hasNextInt()) {
        scaicius1 = sc1.nextInt();
        num1IsInt = true;
    } else {
        System.out.println("Not correct integer");
        continue;
    }
    sc1.close();
}

while (!num2IsInt) { //check second number is int
    Scanner sc2 = new Scanner(System.in);
    System.out.println("(2)Įveskyte antras skaicius");
    if (sc2.hasNextInt()) {
        scaicius2 = sc2.nextInt();
        num2IsInt = true;
    } else {
        System.out.println("Not correct integer");
        continue;
    }
    sc2.close();
}

while (!num3IsInt) { //check third number is int
    Scanner sc3 = new Scanner(System.in);
    System.out.println("(3)Įveskyte trecias skaicius");
    if (sc3.hasNextInt()) {
        scaicius3 = sc3.nextInt();
        num3IsInt = true;
        sc3.close();
    } else {
        System.out.println("Not correct integer");

        continue;
    }
    sc3.close();
}

System.out.println("First number = " + scaicius1);
System.out.println("First number = " + scaicius2);
System.out.println("First number = " + scaicius3);

謝謝 - @Thomas Kläger。 我像一開始一樣更改代碼(只有一個掃描儀,再加上 3 個掃描儀,它不起作用),並為這個“循環我的代碼的幽靈元素”添加到所有其他語句閱讀器。

        boolean num1IsInt = false;
        boolean num2IsInt = false;
        boolean num3IsInt = false;
        int scaicius1 = 0;
        int scaicius2 = 0;
        int scaicius3 = 0;

        System.out.println("Įveskite 3 skaičiai, po viena after each press enter");
        **Scanner sc = new Scanner(System.in);**

        while (!num1IsInt) { //check first number is int
            System.out.println("(1)Įveskyte pirmas skaicius");
            if (sc.hasNextInt()) {
                scaicius1 = sc.nextInt();
                num1IsInt = true;
            } else {
                System.out.println("Not correct integer");
                **sc.next();**
            }
        }

        while (!num2IsInt) { //check second number is int
            System.out.println("(2)Įveskyte antras skaicius");
            if (sc.hasNextInt()) {
                scaicius2 = sc.nextInt();
                num2IsInt = true;
            } else {
                System.out.println("Not correct integer");
                sc.next();
            }
        }

        while (!num3IsInt) { //check third number is int
            System.out.println("(3)Įveskyte trecias skaicius");
            if (sc.hasNextInt()) {
                scaicius3 = sc.nextInt();
                num3IsInt = true;
            } else {
                System.out.println("Not correct integer");
                sc.next();
            }
        }
        sc.close();

        System.out.println("First number = " + scaicius1);
        System.out.println("First number = " + scaicius2);
        System.out.println("First number = " + scaicius3);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM