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

How can I display a text file inside a switch statement in java?

我试图在 switch 语句中打开一个文本文件,但出现错误 'Illegal start of expression'。我是 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.");

    }
}

}

嗯,你有一个重复的变量 in 并且你有一个语法错误 new FileReader("Input.txt")

我建议您使用真正的 ide 来帮助您解决此类语法错误...

让我们分解这里的 3 个错误:

  • <> 包围文件名
  • 重复变量声明in
  • 缺少throws

首先编译器抱怨 <>。修复它们将显示问题编号 2,修复它们将显示问题编号 3。

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

public static void main(String[] args) throws FileNotFoundException 

BufferedReader 行更改为:

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

最终建议:正确缩进代码

我认为你遇到了语法错误:

new FileReader (<"Input.txt">)

删除大于号和小于号,它应该可以工作。 另一个错误是您在一个方法中将两个变量命名为相同:

Scanner in

BufferedReader in

我认为这与 "switch/case" 语法无关。

要获得更多 "overview" 开关盒,您可以设置大括号:

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。 第二个问题是您在不应该使用的地方使用了 angular 括号。

您可以跳过用于检查文件是否存在的try catch 块。希望对你有帮助。