中的代碼main():
public static void main(String[] args) {
int menu = menu();
if (menu == 0) {
System.out.print("End program");
}
if (menu == 1) {
}
if (menu == 2) {
System.out.print("Enter the Capacity>");
double capacity = sc.nextDouble();
if (capacity <= 0) {
System.out.println("Wrong input");
menu = menu();
}
}
}
這是menu()方法:
public static int menu() {
System.out.println("0. End program");
System.out.println("1. No Caps");
System.out.println("2. Knapsack Problem");
System.out.println("3. Count Ways");
System.out.println("4. Merge Strings");
System.out.println("5. Password Generator");
System.out.print("Enter a digit 0-5>");
int choice = sc.nextInt();
if (choice > 5 || choice < 0) {
System.out.println("Wrong input");
return menu();
}
return choice;
}
我的問題是我需要程式從頭開始運行,以防使用進入capacity <= 0.
現在它只列印選單,但在我選擇一個選單選項后,即使capacity <= 0. 即程式不會再次檢查容量是否小于0。
我該如何解決?
我不能使用回圈——這是我的任務的要求。
uj5u.com熱心網友回復:
由于不允許使用回圈,因此您需要將條件邏輯提取到一個單獨的方法中,該方法將從main().
讓我們稱之為start()。如果用戶為Knapsack Problem(option 2) 提供負容量,我們應該start()遞回呼叫。
public static void main(String[] args) {
start();
}
public static void start() {
int menu = menu();
if (menu == 0) {
System.out.print("End program");
}
if (menu == 1) {
}
if (menu == 2) {
System.out.print("Enter the Capacity>");
double capacity = sc.nextDouble();
if (capacity <= 0) {
System.out.println("Wrong input");
start(); // calling `start()` recursively
}
System.out.println("Capacity: " capacity);
}
}
static int menu() {
System.out.println("0. End program");
System.out.println("1. No Caps");
System.out.println("2. Knapsack Problem");
System.out.println("3. Count Ways");
System.out.println("4. Merge Strings");
System.out.println("5. Password Generator");
System.out.print("Enter a digit 0-5>");
int choice = sc.nextInt();
if (choice > 5 || choice < 0) {
System.out.println("Wrong input");
return menu();
}
return choice;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/493068.html
