如何在java中的switch语句中显示文本文件?

如何在java中的switch语句中显示文本文件?,java,switch-statement,bufferedreader,Java,Switch Statement,Bufferedreader,我试图在switch语句中打开一个文本文件,但收到错误“表达式的非法开始”。我是Java新手,请尽可能简单的解释 这是我的代码,忽略其他开关情况: import java.util.Scanner; public class journeyPlanner { public static void main (String[] args){ Scanner in = new Scanner(System.in); System.out.println(" -- MAIN MENU

我试图在switch语句中打开一个文本文件,但收到错误“表达式的非法开始”。我是Java新手,请尽可能简单的解释

这是我的代码,忽略其他开关情况:

import java.util.Scanner;
public class journeyPlanner {
public static void main (String[] args){
    Scanner in = new Scanner(System.in);
    System.out.println("  -- MAIN MENU -- \n 1: Display Journeys \n 2: Identify Suitable Journeys \n Q: Quit \n Pick:");
    String Choose = in.next();


    switch (Choose) {

        case "1" : BufferedReader in = new BufferedReader(new FileReader (<"Input.txt">));
                            break;

        case "2" : System.out.println("You answered: " + Choose + ". Please try again.");
                            break;

        case "Q" : System.out.println("You answered: " + Choose + ". That is correct!");
                            break;
            default:
            System.out.println("Please select a valid answer choice.");

    }
}
import java.util.Scanner;
公共类旅程规划师{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“--主菜单--\n 1:显示行程\n 2:识别合适的行程\n Q:退出\n选择:”);
字符串Choose=in.next();
开关(选择){
案例“1”:BufferedReader in=new BufferedReader(new FileReader());
打破
案例“2”:System.out.println(“您回答:“+Choose+”。请再试一次”);
打破
案例“Q”:System.out.println(“您回答:“+Choose+”。这是正确的!”);
打破
违约:
System.out.println(“请选择一个有效的答案选项”);
}
}

}

哼,您在中有一个重复的变量
,并且您有一个语法错误
新文件读取器(“Input.txt”)


我建议您使用一个真正的ide,它可以帮助您解决此类语法错误…

让我们在这里详细分析三个错误:

  • 文件名周围的
  • 缺少
    抛出
  • 首先,编译器抱怨
    。修复它们将显示问题2,修复将显示问题3

    通过将
    main
    更改为抛出异常(或者更好地捕获异常),可以解决这三个问题:

    BufferedReader
    行更改为:

    case "1" : BufferedReader in2 = new BufferedReader(new FileReader ("Input.txt")); break;
    

    最后一条建议:正确缩进代码

    我认为您的代码有语法错误:

    new FileReader (<"Input.txt">)
    

    我认为这与“switch/case”语法无关

    要在交换机外壳上获得更多“概览”,可以设置大括号:

    switch (bla) {
      case FOO: {
        // [...]
        break;
      }
    }
    

    这对我很有效:

    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        Scanner in = new Scanner(System.in);
        System.out.println("  -- MAIN MENU -- \n 1: Display Journeys \n 2: Identify Suitable Journeys \n Q: Quit \n Pick:");
        String Choose = in.next();
    
        switch (Choose) {
    
            case "1":
        {
            // first we'll try to open the file
            try {
                BufferedReader br = new BufferedReader(new FileReader("Input.txt"));
            } catch (FileNotFoundException ex) {
                // if the file does not exist, we'll create one
                PrintWriter writer = new PrintWriter("Input.txt", "UTF-8");
            }
        }
                break;
    
    当然,我必须添加一些导入(BufferedReader、FileNotFoundException、FileReader、PrintWriter、UnsupportedEncodingException、Scanner)

    问题是您已经在(扫描仪)中分配了变量,然后在中创建了BufferReader。 第二个问题是,在不应该使用角括号的地方使用了角括号


    您可以跳过try-catch块来检查文件是否存在。希望有帮助。

    为什么文件名周围有
    呢?你有多个编译错误,为什么不下载一个像eclipse这样的IDE呢,它会帮你很多忙…希望jre是1.7或更高版本,否则情况“也会有问题…@PetterFriberg好的,是的,我完全忘记了这一点,因为我主要使用1.8
    BufferedReader in
    
    switch (bla) {
      case FOO: {
        // [...]
        break;
      }
    }
    
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        Scanner in = new Scanner(System.in);
        System.out.println("  -- MAIN MENU -- \n 1: Display Journeys \n 2: Identify Suitable Journeys \n Q: Quit \n Pick:");
        String Choose = in.next();
    
        switch (Choose) {
    
            case "1":
        {
            // first we'll try to open the file
            try {
                BufferedReader br = new BufferedReader(new FileReader("Input.txt"));
            } catch (FileNotFoundException ex) {
                // if the file does not exist, we'll create one
                PrintWriter writer = new PrintWriter("Input.txt", "UTF-8");
            }
        }
                break;