尝试根据标题中提到的用户输入打印文件。基本上,我的程序已经改变了我之前创建的从文件中读取数据的程序,所以我知道文件已经正确导入(不是问题)。
我遇到的问题是,如果用户选择了特定的号码,我试图让程序打印整个.txt文件,在这种情况下,' 1'。我目前的代码是:
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
声明完全关闭了,而且我朝着错误的方向前进,有人能指出我在右边并帮助我吗?
答案 0 :(得分:2)
你关闭了,但并不完全。
您正确读取用户输入,但现在需要循环播放文件内容。
if(S.nextInt() == 1) {
while (INPUT.hasNextLine()) {
System.out.println(INPUT.nextLine());
}
}
只要文件内容hasNextLine
您可以安全地删除String option = S.next();
另外,只是一小部分命名约定,不要使用全部大写字母作为变量名称,除非它们是静态的。此外,变量的第一个字母通常是小写的。
答案 1 :(得分:2)
if (S.nextInt() == 1) {
// check if there is input ,if true print it
while((INPUT.hasNextLine())
System.out.println(INPUT.nextLine());
}
答案 2 :(得分:0)
此外,对于这样的菜单方案,请考虑使用switch语句,然后在默认情况下调用菜单打印(移动到单独的方法),这样如果输入错误,您可以重新打印菜单选项。此外,switch语句比一堆if更具可读性(可以说是),如下所示:
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?
}
}