我的数组保持打印为空。填写不当?

时间:2015-11-30 00:14:16

标签: java arrays null

我已经查看了其他问题,大多数人使用拆分而我没有使用它,也没有根据我的情况对其进行适当的回答。使用Array练习,现在试图拉来自文件的字符串。这是我的主要课程

Scanner fileIn = null;  // Initializes fileIn to an empty object
  try
  {
     // Attempt to open the file
     FileInputStream file = new FileInputStream("questions.dat");
     fileIn = new Scanner(file);
  }
  catch (FileNotFoundException e)
  {
        // If the file could not be found, this code is executed
        // and then the program exits
     System.out.println("File not found.");
     System.exit(0);
  }

String line = "";
int i = 0;
String question[] = new String[5];

for(i=0; i < question.length; i++)
  {
     while(fileIn.hasNextLine())
     {
        line = fileIn.nextLine();
        System.out.println(line);
        question[i] = fileIn.nextLine();

     }
    System.out.println(Arrays.toString(question));
}

由于某种原因,当它打印问题[]时,它会打印[7,null,null,null,null]。我不知道为什么。我的数组实际上没有填充字符串吗? 示例字符串。 一周有多少天?七。大多数人有多少手指?十。这是最后一个字符串。程序从何而来?

2 个答案:

答案 0 :(得分:4)

你有嵌套循环,你只填充数组中的第一个元素:

for(i=0; i < question.length; i++)
  {
     while(fileIn.hasNextLine())
     {
        line = fileIn.nextLine();
        System.out.println(line);
        question[i] = fileIn.nextLine();

     }
    System.out.println(Arrays.toString(question));
}

你需要删除内循环:

for(i=0; i < question.length; i++)
  {
     if(fileIn.hasNextLine())
     {
        line = fileIn.nextLine();
        System.out.println(line);
        question[i] = line;

     }
    System.out.println(Arrays.toString(question));
}

答案 1 :(得分:0)

还要建立@kOner答案,这样会更好

for(i=0; i < question.length && fileIn.hasNextLine(); i++)
{
    line = fileIn.nextLine();
    System.out.println(line);
    question[i] = line;
}

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