Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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 从文本文件读入数组-获取“null”_Java_Arrays - Fatal编程技术网

Java 从文本文件读入数组-获取“null”

Java 从文本文件读入数组-获取“null”,java,arrays,Java,Arrays,我从一个文件中读取数据并将其复制到一个数组中。我的文件有五行文字,每行一句话。我得到的输出数组大小是5,但之后什么都没有。如果我添加一个数组的打印行,它会给我5个空值 有人能解释一下我做错了什么吗?谢谢 公共静态int buildArray引发异常 { System.out.printlnBuildArray正在启动; java.io.File textFile;//声明File类型的变量 textFile=new java.io.File textFile.txt;//保留内存 扫描仪输

我从一个文件中读取数据并将其复制到一个数组中。我的文件有五行文字,每行一句话。我得到的输出数组大小是5,但之后什么都没有。如果我添加一个数组的打印行,它会给我5个空值

有人能解释一下我做错了什么吗?谢谢

公共静态int buildArray引发异常 { System.out.printlnBuildArray正在启动; java.io.File textFile;//声明File类型的变量 textFile=new java.io.File textFile.txt;//保留内存 扫描仪输入=空; 尝试 { 输入=新的扫描文本文件; } 捕获异常 { 方法中的System.out.printlnException; System.exit0; } int-arraySize=0; whileinput.hastLine { arraySize=arraySize+1; 如果input.nextLine==null 打破 } System.out.printlnArray大小为+arraySize; //将线移动到阵列中 String[]linesInRAM=新字符串[arraySize];//保留内存 整数计数=0; 如果input.hasNextLine { 当计数<排列时 { 系统输出打印测试; linesInRAM[count]=input.nextLine; 系统输出打印行内存[计数]; 计数=计数+1; } } 在此代码中

    int count = 0;
    if (input.hasNextLine())   
上面的hasNextLine将始终为false,因为您已经读取了整个文件


将扫描程序重置为文件的开头,或者使用动态列表(例如ArrayList)将元素添加到文件中。

我的Java有些生疏,但我回答的基本要点是,您应该创建一个新的扫描程序对象,以便它再次从文件的开头读取。这是重置为文件开头的最简单方法

您的代码当前不起作用,因为当您调用input.nextLine时,实际上是在增加扫描程序,因此在第一次扫描的末尾,而循环输入位于文件的末尾,因此当您再次调用input.nextLine时,它将返回null

然后在代码的底部,循环应该是这样的:

if (newScanner.hasNextLine())
    { 
        while(count < arraySize) 
            {
                System.out.println("test");
                linesInRAM[count] = newScanner.nextLine();
                System.out.println(linesInRAM[count]);
                count = count + 1;
            }
    }

你从未重置扫描仪,所以直到文件末尾…这正是我需要的,谢谢。现在它工作了。我不太清楚扫描仪是这样工作的,谢谢你的解释!当然!一定要单击复选标记和/或向上箭头;
if (newScanner.hasNextLine())
    { 
        while(count < arraySize) 
            {
                System.out.println("test");
                linesInRAM[count] = newScanner.nextLine();
                System.out.println(linesInRAM[count]);
                count = count + 1;
            }
    }