2013-01-12 66 views
2
public static void operation() { 
    try { 
     Scanner input = new Scanner(System.in); 
     String choiceString = ""; 
     char choice = 'a'; 
     System.out.print("Enter letter of choice: "); 
     choiceString = input.next(); 
     if (choiceString.length() == 1) { 
      choice = choiceString.charAt(0); 
      System.out.println("-------------------------------------------"); 

     switch(choice) { 
      case 'a': { 
       .... 
       break; 
      } 
      case 'b': { 
       ....  
      } 
      default: 
       throw new StringException("Invalid choice..."); 
     } 
     }else { 
      throw new StringException("Invalid input..."); 
     } 
    } catch(StringException i) { 
     System.out.println("You typed " + choiceString + i); 
    } 

當程序提示用戶輸入選擇的字母,並且用戶輸入一個單詞或數字時,它應該捕獲異常。它應該顯示這個輸出:異常處理錯誤:無法找到符號變量

You typed: ashdjdj 
StringException: Invalid input... 

這裏的問題是,它找不到變量choiceString。我該如何解決?

+1

你夥計們,非常感謝你們!我不知道那件事。我的程序現在完美工作,謝謝你一百萬次! – Ciara

+0

接受答案是個好主意:) – Suranga

回答

2

這是因爲你已經聲明try塊內的變量聲明它的try塊外

1

你的問題是,在try塊中聲明變量的作用域不會從相應的catch塊可見。要解決編譯錯誤,聲明變量外嘗試像這樣,

public static void operation() { 
    String choiceString = ""; 
    try { 
     ... 
    } catch(StringException i) { 
     System.out.println("You typed " + choiceString + i); 
    } 
} 
1

申報choiceString外try catch塊,它應該解決

1

choiceString在try塊聲明,所以局部的問題範圍。您可以移動choiceString到try-catch塊之外的你需要它在catch塊的範圍可供選擇:

String choiceString = ""; 
try { 
    // omitted for brevity 
} catch(StringException i) { 
    System.out.println("You typed " + choiceString + i); 
} 
1

移動你的choiceString出這樣的try塊,

String choiceString = ""; 
     try { 
      Scanner input = new Scanner(System.in); 
........ 
相關問題