import java.io.*;
import java.util.*;
import java.text.*;
public class textFile {
public static void main(String args[]) throws IOException {
Scanner sf = new Scanner(new File("C:\\temp_Name\\DataGym.in.txt"));
int maxIndx = -1;
String text[] = new String[1000];
while (sf.hasNext()) {
maxIndx++;
text[maxIndx] = sf.nextLine();
}
sf.close();
double average[] = new double[100];
for (int j = 0; j <= maxIndx; j++) {
Scanner sc = new Scanner(text[j]);
int k = 0;
while (k <= 10) { //attempt to store all the values of text file (DataGym.in.txt) into the array average[] using Scanner
average[k] = sc.nextDouble();
k++;
}
}
}
}
我的代码没有工作,并且在我将sc.nextDouble()存储到数组的k元素的地方继续给我这个错误:
java.util.NoSuchElementException:
null(在java.util.Scanner中)
答案 0 :(得分:1)
您应该查看Scanner API。如果您拨打Scanner.hasNext()
并拨打Scanner.nextLine()
以下电话,则表示怀疑。有免费电话可以查看,然后从Scanner
获取。例如,如果你真的想要下一行,那么你应该在调用Scanner.hasNextLine()
之前检查Scanner.nextLine()
是否正确。同样,您可以通过调用Scanner.nextDouble()
来呼叫Scanner.hasNextDouble()
,而无需先前调用sf.close
。
还有一些评论提到你应该使用调试器或打印语句,看看你是否得到了你应该得到的东西。这样的步骤是调试所必需的。
例如在System.out.println(Arrays.toString(text))
之后,您可以使用active
并判断数组是否包含您期望的内容。
希望这有助于您的调试。