2013-02-21 63 views
-2

我編譯我的任務代碼時有問題。JAVA - 錯誤變量的做..而

當我使用開關菜單的掃描儀輸入作爲整數值時,do-while工作正常,但由於分配要求,菜單輸入需要是字符,所以我改變它如下,但它不斷給我沒有找到錯誤,說明m的變量。

do { 
    System.out.println(displayMenu("")); 
    option = scn.nextLine(); 
    char m = option.charAt(0); 

    switch (m) {  
    case 'A': TMA_Q3.enterInput(0); break; 
    case 'B': System.out.println(" "); break; 
    case 'C': System.out.println(""); break; 
    case 'D': System.out.println(""); break; 
    case 'E': System.out.println(""); break; 
    case 'F': System.out.println(""); break; 

    } 
} while(m != 'F'); // error occurs on this line stating m is not found 
+0

你將不得不在此之前外界預定義M /,或者它運行的範圍 – Najzero 2013-02-21 07:05:07

+0

*搜索的錯誤信息*會產生有用的結果。另外,請確保包含copy'n'paste。 – 2013-02-21 07:23:07

回答

8

m超出範圍do {因爲你定義它裏面do {

嘗試重構是這樣的:

char m; 
do { 
    System.out.println(displayMenu("")); 
    option= scn.nextLine(); 
    m = option.charAt(0); 
    ... 
+6

併爲它分配一些默認值 – 2013-02-21 06:50:34

+0

+1 @JigarJoshi,因爲如果輸入是**空**,它可能會拋出'StringIndexOutOfBoundsException'。 – SudoRahul 2013-02-21 06:53:44

3

您必須聲明mdo

char m=''; 

do { 
    //... 
} while(m!='F'); 
1

可變m超出範圍。您需要在do ... while循環之外定義它。

0
System.out.println(displayMenu("")); 
option= scn.nextLine(); 
char m=''; 

必須do語句之外。 嘗試下面這段代碼反向代碼INT:

System.out.println(displayMenu("")); 
option= scn.nextLine(); 
char m =option.charAt(0); 
do{ 
    m =option.charAt(0); 
switch (m) { case 'A': TMA_Q3.enterInput(0);break; 
       case 'B': System.out.println(" "); break; 
       case 'C': System.out.println(""); break; 
       case 'D': System.out.println(""); break; 
       case 'E': System.out.println(""); break; 
       case 'F': System.out.println(""); break; 

       } 
} 
while(m!='F');