【问题标题】:How can I display a text file inside a switch statement in java?java - 如何在java中的switch语句中显示文本文件?
【发布时间】:2015-12-31 14:57:16
【问题描述】:

我试图在 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.");

    }
}

}

【问题讨论】:

  • 为什么文件名周围有&lt;&gt;
  • 你有多个编译错误,为什么不下载一个像eclipse这样的IDE,它会帮助你很多......

标签: java switch-statement bufferedreader


【解决方案1】:

让我们在这里分解三件事:

  • &lt;&gt; 包围文件名
  • 重复变量声明in
  • 缺少throws

首先编译器抱怨&lt;&gt;。修复它们将显示问题编号 2,修复它们将显示问题编号 3。

所有这三个都可以通过将main 更改为抛出异常(或替代/更好地捕获它)来解决:

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

BufferedReader 行更改为:

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

最终建议:正确缩进代码

【讨论】:

  • 希望 jre 为 1.7 或以上,否则 "" 的情况也会有问题...
  • @PetterFriberg 好吧,是的,完全忘记了那个,因为我主要使用 1.8
【解决方案2】:

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

我建议你使用一个真正的 ide 可以帮助你解决这种语法错误......

【讨论】:

    【解决方案3】:

    我认为你有一个语法错误:

    new FileReader (<"Input.txt">)
    

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

    Scanner in
    

    BufferedReader in
    

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

    要获得更多关于开关盒的“概览”,您可以设置大括号:

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

    【讨论】:

      【解决方案4】:

      这对我有用:

      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 块来检查文件是否存在。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-27
        • 1970-01-01
        • 1970-01-01
        • 2020-04-12
        相关资源
        最近更新 更多