JAVA-do的错误变量。。虽然

JAVA-do的错误变量。。虽然,java,Java,我在编译作业代码时遇到问题 当我将开关菜单的扫描器输入用作整数值时,do while工作正常,但由于分配要求,菜单输入需要为char,因此我对其进行如下更改,但它不断给我错误,说明未找到m的变量 do { System.out.println(displayMenu("")); option = scn.nextLine(); char m = option.charAt(0); switch (m) { case 'A': TMA_Q3.enterInput(

我在编译作业代码时遇到问题

当我将开关菜单的扫描器输入用作整数值时,
do while
工作正常,但由于分配要求,菜单输入需要为char,因此我对其进行如下更改,但它不断给我错误,说明未找到
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

m
超出了范围
do{
,因为您在
do{
中定义了它

试着像这样重构:

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

您必须在
do
中声明
m

char m='';

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

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

System.out.println(displayMenu(""));
option= scn.nextLine();
char m='';
必须在do语句之外。 尝试在下面的代码中反转您的代码:


并为其指定一些默认值+1@JigarJoshi,因为如果输入为空,它可能会抛出
StringIndexOutOfBoundsException
。您必须在do之外/之前预定义M,否则它将超出范围搜索错误消息将产生有用的结果。此外,请确保包含“n”粘贴副本。
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');