Java 根据用户输入打印文件内容
尝试根据标题中提到的用户输入打印文件。基本上,我的程序已经从我以前创建的从文件中读取数据的程序更改,因此我知道文件已正确导入(不是问题) 我遇到的问题是,如果用户选择了一个特定的数字,我试图让程序打印整个.txt文件,在本例中为“1”。我目前的代码是:Java 根据用户输入打印文件内容,java,Java,尝试根据标题中提到的用户输入打印文件。基本上,我的程序已经从我以前创建的从文件中读取数据的程序更改,因此我知道文件已正确导入(不是问题) 我遇到的问题是,如果用户选择了一个特定的数字,我试图让程序打印整个.txt文件,在本例中为“1”。我目前的代码是: import java.io.FileReader; import java.util.Scanner; public class InputOutput { public static void main(String[] args)
import java.io.FileReader;
import java.util.Scanner;
public class InputOutput {
public static void main(String[] args) throws Exception {
// these will never change (be re-assigned)
final Scanner S = new Scanner(System.in);
final Scanner INPUT = new Scanner(new FileReader("C:\\Users\\JakeWork\\workspace\\Coursework\\input.txt"));
System.out.print("-- MENU -- \n");
System.out.print("1: Blahblahblah \n");
System.out.print("2: Blahblahblah \n");
System.out.print("Q: Blahblahblah \n");
System.out.print("Pick an option: ");
if (S.nextInt() == 1) {
String num = INPUT.nextLine();
System.out.println(num);
}
我觉得好像我的
声明完全错了,而我正朝着完全错误的方向前进,有人能给我指出正确的方向并伸出援助之手吗?你很接近,但还不太接近
您可以正确读取用户输入,但现在需要循环中的文件内容
if(S.nextInt() == 1) {
while (INPUT.hasNextLine()) {
System.out.println(INPUT.nextLine());
}
}
只要文件内容hasNextLine
您可以安全地删除String选项=S.next()代码>
另外,只是一点命名惯例的吹毛求疵,不要对变量名使用所有大写字母,除非它们是静态的。此外,变量的第一个字母通常是小写。< P>,对于这样的菜单场景,考虑使用Switter语句,然后在缺省情况下向菜单打印(即移动到单独的方法)调用一个调用,这样,如果输入错误,就可以重新打印菜单选项。此外,switch语句比一堆if语句更具可读性(可以说),如下所示:
if (S.nextInt() == 1) {
// check if there is input ,if true print it
while((INPUT.hasNextLine())
System.out.println(INPUT.nextLine());
}
int option = S.nextInt();
switch(option) {
case 1 :
while(INPUT.hasNextLine()) {
System.out.println(INPUT.nextLine());
}
break;
case 2 :
//Do stuff
break;
default :
//Default case, reprint menu?
}
}
在调用S.nextInt()
之前,您有一个S.next()
,这是您的问题的原因吗?你能提供你测试的输入吗?另外,删除“String option=S.next();”行。它没有用。'String option=S.next();'是为代码的其余部分,只是忽略它抱歉!!我也试着让它工作,但没有用。什么不工作?我在自己的机器上运行代码在switch语句中输入逻辑既难看又容易出错。要不要详细说明一下这种感觉?一堆if是否不太容易出错?为什么?