我已经查看了其他问题,大多数人使用拆分而我没有使用它,也没有根据我的情况对其进行适当的回答。使用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]。我不知道为什么。我的数组实际上没有填充字符串吗? 示例字符串。 一周有多少天?七。大多数人有多少手指?十。这是最后一个字符串。程序从何而来?
答案 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));