没有这样的元素例外

  • 本文关键字:元素 java
  • 更新时间 :
  • 英文 :


虽然ch变量是在循环外声明的,但while循环不会识别它。为什么?没有编译错误。

package calculator;
import java.util.Scanner;
public class Calculation {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int ch;
        do {
            System.out.print("ENTER YOUR CHOICE : ");
            ch = s.nextInt();
            switch (ch) {
                case 1: {
                }
                .....
                default: {
                    System.out.println("n!!!ENTER VALID CHOICE !!!");
                    break;
                }
            }
        } while (ch != 9);
        s.close();
    }
}

将默认大小写的break语句放在大括号之外。我认为这是你的问题。我尝试了下面的代码并给出了输出。

import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args)
{
    Scanner s = new Scanner(System.in);
    int ch;
    do  { 
        System.out.print("ENTER YOUR CHOICE : ");
        ch=s.nextInt();
        switch(ch)
        {
            case 1: 
                System.out.println("one");
            break;
            default: 
                System.out.println("n!!!ENTER VALID CHOICE !!!");
            break;
        }
    }while(ch!=9);
    s.close();
   }
}
  1. 此代码运行良好。父块的元素始终可见
  2. default的情况下不要使用break

您的代码:

import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int ch;
        do {
            System.out.print("ENTER YOUR CHOICE : ");
            ch = s.nextInt();
            switch (ch) {
                case 1:
                    System.out.println("one");
                    break;
                default:
                    System.out.println("n!!!ENTER VALID CHOICE !!!");
            }
        } while (ch != 9);
        s.close();
    }
}

*只有我所做的编辑才从default块中删除了break

运行示例:

ENTER YOUR CHOICE : 1
one
ENTER YOUR CHOICE : 2
!!!ENTER VALID CHOICE !!!
ENTER YOUR CHOICE : 3
!!!ENTER VALID CHOICE !!!
ENTER YOUR CHOICE : 9
!!!ENTER VALID CHOICE !!!