2017-05-31 49 views
0

我正在做一個待辦事項列表,我目前正在製作菜單。該菜單接收來自數字1-6的用戶的輸入並且執行與該數字(int)相關聯的特定任務。這是完美的世界場景,所以我需要菜單能夠取非整數值,而不是磚塊以及向用戶顯示錯誤消息。我想我已經創建了一個有效的方式來向用戶提供整數而不用砌磚程序,但是我無法確定我的return語句應該是爲了在main中使用這個方法。我將在如下開關語句中使用它:爲了使用爲非整數值拋出異常的Menu,我應該使用什麼樣的return語句?

  while (true) { 
     switch (getMenuOption()) { 
      case 1: 
      etc 

這是我對getMenuOption的當前方法。我應該使用什麼樣的退貨聲明,還是有更有效的方法來執行此項?

package project1_martinez_adriel; 

import java.util.Scanner; 

public class getMenuOption { 
    public static int getMenuOption() {  
Scanner input = new Scanner(System.in); 
     System.out.println(" 1. Create a new item \n 2. Mark an item as in progress \n 3. Mark an item as completed \n 4. List all to do items \n 5. Remove completed items \n 6. Exit \n What would you like to do? \n "); 
     String value = input.nextLine(); 
     int num; 
     try { 
      num = Integer.parseInt(value); 
      if (!(num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6)) { 
       System.out.println("ERROR! Invalid choice! \nPlease enter a valid choice BETWEEN 1 & 6: "); 
      }else if (num == 6){ 
      System.exit(0); 
     } 


     } catch (NumberFormatException e) { 
      System.out.println("ERROR! Please enter a valid INTEGER between 1 & 6."); 
     } 

     return //What do I put here!? 

    } 

回答

1

如何清除它是

if (num < 1 || num > 6) { 
    System.out.println("ERROR! Invalid choice!..."); 
} 

後來

return num; 

在switch語句應該處理1 & & 6之間選項的代碼,包括6System.exit (0);

我甚至會在開關default

編輯

num的錯誤信息也應值進行初始化,像

int num = -1; 
+0

感謝您的清理,但是如果我在我的回報中輸入num,我會得到一個令人討厭的異常錯誤。確切的說:異常在線程「主」了java.lang.RuntimeException:不可編譯的源代碼 - 變量num可能尚未在project1_martinez_adriel.getMenuOption.getMenuOption(getMenuOption.java:25)初始化 \t \t在project1_martinez_adriel.Project1_Martinez_Adriel.main (Project1_Martinez_Adriel.java:14) C:\ Users \ Adriel \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml:53:Java返回:1 BUILD FAILED(總時間:4秒) –

+0

真的 - 什麼是異常,以及從什麼代碼被拋出。 –

+0

線程「main」中的異常java.lang.RuntimeException:不可編譯的源代碼 - 變量num可能未在project1_martinez_adriel.getMenuOption.getMenuOption(getMenu Option.java:25)處被初始化,位於project1_martinez_adriel.Project1_Martinez_Adriel.main(Proje ct1_Martinez_Adriel。 java:14)C:\ Users \ Adriel \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-sn ippets \ run.xml:53:Java返回:1 BUILD FAILED(總時間:4秒) –

0

所以經過一番清理,無奈, &長時間我想出了這個,包括switch語句:

Scanner input = new Scanner(System.in); 
     boolean validInput = false; 
     do { 
      System.out.print("Enter an integer: "); 
      int num; 
      try { 
       num = input.nextInt(); 
       switch (num) { 
        case 1: 
        case 2: 
        case 3: 
        case 4: 
        case 5: 
        case 6: // cascading case statement example 
        validInput = true; 
        break; 
        default: 
        System.out.println("ERROR! Please enter a valid choice BETWEEN 1 & 6 (inclusive): "); 
        num = input.nextInt(); 
        break; 
       } 
      } catch (Exception e) { 
       /* input.next() to move the Scanner forward. */ 
       System.out.println(input.next() + " was not valid input."); 
       System.out.println("ERROR! Please enter a valid INTEGER between 1 & 6."); 
      } 
     } while (!validInput); 
     input.close(); 
    } 
} 
相關問題