2017-08-28 62 views
-6

我正在嘗試使用以下內容讀取用戶輸入 - 在while會話中得到一個錯誤,即變量'n'-找不到簡單的變量n。do/while循環內有錯誤

public static void main(String[] args) { 
    do{ 

     Scanner reader = new Scanner(System.in); // Reading from System.in 
     System.out.println("Enter your choice: "); 
     int n = reader.nextInt(); // Scans the next token of the input as an int. 

     switch(n){ 
      case 1: System.out.println("load_flight1()"); 
       break; 
      case 2: System.out.println("load_flight2()"); 
       break; 
      case 3: System.out.println("load_flight3()"); 
       break; 
      case 4: System.out.println("generate_report()"); 
       break; 
      case 5: System.out.println("exit()"); 
       break; 
      default: System.out.println("Invalid menu choice"); 
        System.out.println("press any key:"); 
     } 
    }while ((n!=1) && (n!=2) && (n!=3) && (n!=4) && (n!=5)); 

有人可以發現我要去哪裏嗎?

由於

+0

你的'int n = reader.nextInt();'在範圍之外是不可見的。在循環之前引入局部變量'n'。 – DimaSan

+0

n實際上超出了範圍...... –

+1

與描述的問題並不真正相關,但不要在每次迭代中創建Scanner。在你的循環之前聲明和創建一個掃描器並在其中使用它。 – Pshemo

回答

0

n範圍是do ... while Loop其中所述病症是不是環的一部分的內部。 在循環之外聲明它。

Scanner reader = new Scanner(System.in); // Reading from System.in 
    System.out.println("Enter your choice: "); 
int n; 
do { 
    n = reader.nextInt(); 
    switch (n) { 
    case 1: 
     System.out.println("load_flight1()"); 
     break; 
    case 2: 
     System.out.println("load_flight2()"); 
     break; 
    case 3: 
     System.out.println("load_flight3()"); 
     break; 
    case 4: 
     System.out.println("generate_report()"); 
     break; 
    case 5: 
     System.out.println("exit()"); 
     break; 
    default: 
     System.out.println("Invalid menu choice"); 
     System.out.println("press any key:"); 
    } 

} while ((n != 1) && (n != 2) && (n != 3) && (n != 4) && (n != 5)); 
+0

'n = reader.nextInt();'應該在while循環中完成 –

+0

@NahuelFouilleul它在while循環中完成 – Jens

+0

您正在讀取的值不會像這樣在開關中進行分析;) – AxelH