-3

割り当てコードをコンパイルするときに問題が発生しました。

スイッチメニューのスキャナー入力を整数値として使用すると、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
4

4 に答える 4

8

mdo {内で定義しているため、範囲外ですdo {

次のようにリファクタリングしてみてください。

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

から宣言するm必要がありdoます:

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 に答える