-3

编译分配代码时遇到问题。

当我将开关菜单的扫描仪输入用作整数值时,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
4

4 回答 4

8

m超出范围do {,因为您在do {.

尝试像这样重构:

char m;
do {
    System.out.println(displayMenu(""));
    option= scn.nextLine();
    m = option.charAt(0);
    ...
于 2013-02-21T06:49:45.627 回答
3

您必须声明mdo

char m='';

do {
    //...
} while(m!='F');
于 2013-02-21T06:50:57.627 回答
1

变量m超出范围。您需要在do ... while循环之外定义它。

于 2013-02-21T06:51:43.953 回答
0
System.out.println(displayMenu(""));
option= scn.nextLine();
char m='';

必须在 do 语句之外。尝试将您的代码反转为以下代码:

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');
于 2013-02-21T06:54:20.367 回答