簡體   English   中英

(Java)將文本文件中的內容存儲到數組中時,打印數組的輸出均為null

[英](Java)When store contents from text file into an array, output of printing array was all null

我是Java新手,最近有一個涉及數組的作業。 這只是它的第一部分,我試圖將文件中的內容存儲到數組中,但是結果是[null,null,null ......]。 我曾經嘗試使用這些
String[] array = list.toArray(new String[count]);
List<String> list = new ArrayList<String>();
但是它不起作用,通過stackoverflow搜索,發現了與上面和下面類似的示例,該示例將內容存儲在數組中,但是仍然希望您能使我對實際發生的事情有所了解,因此我可以對其進行調試。 謝謝。

內容示例:

3
123
456 
789

我需要將其保存為字符串,因為它是作業中的一個很長的數字

import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;

public class Array {

      public static void main(String[] args) throws Exception{ 
            // TODO Auto-generated method stub
            FileReader theFile = new FileReader("path of the file");
            BufferedReader readFile = new BufferedReader(theFile);

            String content;
            String lineInFile = readFile.readLine();
            int count = 0; 
            while(lineInFile != null)
            {
                count++;
                lineInFile = readFile.readLine();
            }

            System.out.println(count);
            String[] array = new String[count];
            for(int o = 0; o < count; o++)
            {
                content = lineInFile + "";
                lineInFile = readFile.readLine();
                array[o] = lineInFile;
            }

            System.out.println(Arrays.toString(array));

您正在調用Readline並一次又一次地重寫對象lineInFile ...

這里:

String lineInFile = readFile.readLine();
int count = 0; 
while(lineInFile != null)
{
    count++;
    lineInFile = readFile.readLine();
}

你應該把它放在里面

 array[o] = lineInFile;

而不是o使用count變量

它不起作用,因為代碼的第一部分讀取文件中的所有行以初始化count變量:

String lineInFile = readFile.readLine();
int count = 0; 
while(lineInFile != null)
{
    count++;
    lineInFile = readFile.readLine();
}

...並給數組大小

String[] array = new String[count];  

現在,您需要在將文件內容加載到數組之前重置文件緩沖區,因此需要插入以下行:

readFile.reset();

在這之前:

for(int o = 0; o < count; o++)
        {
            content = lineInFile + "";
            lineInFile = readFile.readLine();
            array[o] = lineInFile;
        }

content變量的聲明和初始化似乎沒用,可以刪除

編輯:作為@標記建議您需要在重置方法之前插入以下內容:readFile.mark(0); readFile.reset();

您可以使用lines()方法從readFile獲取所有行。

String[] array = readFile.lines().toArray()

因此,您無需自己數數和閱讀。

您也可以使用Files -class

String[] array = (String[])Files.readAllLines(Paths.get("path to file")).toArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM