簡體   English   中英

退出 do-while 循環應用程序

[英]Exit do-while loop application

我的控制台應用程序有一點問題。 應用程序應該從用戶那里獲取數字並將它們添加到列表中,但是如果輸入是“c”,它應該關閉。 我無法弄清楚如何在不使用Scanner.nextLine()掛起應用程序並退出循環的情況下驗證“c”變量。

public void getNumbersFromUser() {

  Scanner scanner = new Scanner(System.in);
  int number;
  boolean flag = true;

  do{
     System.out.println("Enter a number");

     while(!scanner.hasNextInt()) {
        System.out.println("Thats not a number !");
        scanner.next();
     }
        number = scanner.nextInt();
        list.add(number);
        System.out.println(list);

  }
  while(flag);

一種方法是使用Scanner.next() ,它會阻止等待輸入,並使用Integer.parseInt()自己檢查輸入:

List<Integer> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);

do {
    System.out.println("Enter a number");
    String next = scanner.next();
    if (next.equals("c")) {
        break;
    }

    try {
        int number = Integer.parseInt(next);
        list.add(number);
        System.out.println(list);
    } catch (NumberFormatException ex) {
        System.out.println("That's not a number !");
    }
} while (true);

最好使用next()獲取輸入,並且不要添加第三方庫,創建一個輔助方法來檢查輸入是否為數字:

輔助方法

public static boolean isNumeric(String strNum) {
    try {
        int d = Integer.parseInt(strNum);
    } catch (NumberFormatException | NullPointerException nfe) {
        return false;
    }
    return true;
}

在 do/while 循環中使用它

Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<>();
boolean flag = true;

do {
    System.out.println("Enter a number");
    String input = scanner.next();

    if(!isNumeric(input)) {
        if(!input.equals("c")) {
            System.out.println("Thats not a number !");
            continue; // will restart the loop
        }
        else break; // will exit if input is "c"
    }
    else {
        list.add(Integer.parseInt(input));
        System.out.println(list);
    }
}
while(flag);

現場示例在這里

暫無
暫無

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

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