如何在 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 块。希望对你有帮助。
我试图在 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 块。希望对你有帮助。