从数组中获取null作为输出

时间:2018-10-04 21:53:53

标签: java

import java.util.*;

public class a{
   public static void main(String[] args) throws FileNotFoundException {


    Scanner sc = new Scanner(new File ("master file.txt"));

    String[] ids = new String[100];


    System.out.println(ids);
while(sc.hasNext()) {
    int i = 0;
    ids[i] = sc.next();
    i++;
}

我试图将文件中的数据放入数组。我总是得到一个null作为输出。我不知道为什么。这一直很压力。

2 个答案:

答案 0 :(得分:1)

  1. 要先打印一个数组,然后再用元素填充它。

  2. i循环的每次迭代中,您的计数器0都将重置为while。虽然使用固定数目的元素的数组来读取未知长度的文本不是一个好主意,但是请使用诸如ArrayList之类的动态数组。

  3. 确保您提供了.txt文件的正确路径。

因此您的代码应如下所示:

    Scanner sc = new Scanner(new File ("C:/correct/path/to/file/master_file.txt")); 

    List<String> listOfStrings = new ArrayList<String>(); 

        while(sc.hasNextLine()) {

           listOfStrings.add(sc.nextLine());

        }

    System.out.println(listOfStrings);

答案 1 :(得分:0)

输出为null,因为在尝试打印该数组之前从未分配任何数组。我也将i移到了循环之外,因此不会每次都重新初始化。另外,由于id是一个数组,因此您需要使用Arrays.toString(ids)进行打印,否则您只需获取对象id。

public static void main(String[] args) throws FileNotFoundException {
    String[] ids = new String[100];  //array to store lines
    int i = 0;  // line index
    try (Scanner sc = new Scanner(new File ("master file.txt"))) { // try resource
        while(sc.hasNextLine()) { // check for next line
            ids[i] = sc.nextLine(); // store line to array index
            i++;  // increment index
        }
    }
    System.out.println(Arrays.toString(ids));  //print output.
}