Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据用户输入打印文件内容_Java - Fatal编程技术网

Java 根据用户输入打印文件内容

Java 根据用户输入打印文件内容,java,Java,尝试根据标题中提到的用户输入打印文件。基本上,我的程序已经从我以前创建的从文件中读取数据的程序更改,因此我知道文件已正确导入(不是问题) 我遇到的问题是,如果用户选择了一个特定的数字,我试图让程序打印整个.txt文件,在本例中为“1”。我目前的代码是: import java.io.FileReader; import java.util.Scanner; public class InputOutput { public static void main(String[] args)

尝试根据标题中提到的用户输入打印文件。基本上,我的程序已经从我以前创建的从文件中读取数据的程序更改,因此我知道文件已正确导入(不是问题)

我遇到的问题是,如果用户选择了一个特定的数字,我试图让程序打印整个.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(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是否不太容易出错?为什么?