[英]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.