我為一家餐廳創建了一個 JDBC 專案......問題是它會無限回圈......我不知道該怎么做,我已經研究了幾天。我得到的唯一解決方案是掃描儀hasNext方法,但它也不起作用!!!
package com.restaurant.orders;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("WELCOME TO UR RESTAURANT");
System.out.println("PLEASE, PLACE UR ORDER: ");
ManageOrders.PlaceOrder();
System.out.println("ANYTHING ELSE???");
Scanner scanner=new Scanner(System.in);
boolean c=true;
while(true) {
System.out.println("1. CancleOrder");
System.out.println("2. CancleDish");
System.out.println("3. ReplaceDish");
System.out.println("4. DisplayOrderDetails");
System.out.println("5. Nothing, Thank you!!");
if(scanner.hasNextInt()) {
int ch=scanner.nextInt();
switch(ch) {
case 1:ManageOrders.CancleOrder();break;
case 2:ManageOrders.CancleDish();break;
case 3:ManageOrders.ReplaceDish();break;
case 4:ManageOrders.DisplayorderDetails();break;
case 5:c=false;break;
}
}
if(c==false) {
break;
}
else {
continue;
}
}
scanner.close();
}
}
uj5u.com熱心網友回復:
回圈變得無限,因為以某種方式在輸入中出現了一個非整數值,因此hasNextInt()總是false。
將預期輸入的型別更改為String并用于hasNext() / next()讀取字串值可能是有意義的。
此外,代碼可能會得到改進:
switch宣告缺少一個default案例;if/else宣告是多余的,可以洗掉;while回圈不應該是無限的,它應該檢查狀態c:
Scanner scanner=new Scanner(System.in);
boolean run = true;
while (run) {
System.out.println("1. CancelOrder");
System.out.println("2. CancelDish");
System.out.println("3. ReplaceDish");
System.out.println("4. DisplayOrderDetails");
System.out.println("5. Nothing, Thank you!!");
if (scanner.hasNext()) {
String ch = scanner.next();
switch(ch) {
case "1": ManageOrders.CancleOrder(); break;
case "2": ManageOrders.CancleDish(); break;
case "3": ManageOrders.ReplaceDish(); break;
case "4": ManageOrders.DisplayorderDetails(); break;
case "5": run = false; break;
default: System.out.println("Use digits from 1 to 5 please"); break;
}
}
}
System.out.println("Bye");
uj5u.com熱心網友回復:
您需要以這種方式獲取用戶輸入:
package com.restaurant.orders;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("WELCOME TO UR RESTAURANT");
System.out.println("PLEASE, PLACE UR ORDER: ");
ManageOrders.PlaceOrder();
System.out.println("ANYTHING ELSE???");
Scanner scanner = new Scanner(System.in);
boolean c = true;
while(true) {
System.out.println("1. CancleOrder");
System.out.println("2. CancleDish");
System.out.println("3. ReplaceDish");
System.out.println("4. DisplayOrderDetails");
System.out.println("5. Nothing, Thank you!!");
int ch = scanner.nextInt();
switch(ch) {
case 1:ManageOrders.CancleOrder();break;
case 2:ManageOrders.CancleDish();break;
case 3:ManageOrders.ReplaceDish();break;
case 4:ManageOrders.DisplayorderDetails();break;
case 5:c=false;break;
}
if(c==false) {
break;
}
else {
continue;
}
}
scanner.close();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/349141.html
