我对并行数组和让程序读取整数和双精度有问题。例如,我有一个具有以下值的文本文件:
1234 99.58
5678 1854.99
第一个数字是一个帐号,第二个数字是该帐户的余额。我不确定如何将它们放入并行数组(int []帐号,double []余额),同时查看理想情况下10多个帐户和余额的列表。
我尝试过分别填充数组,但没有成功,这似乎不是最有效的方法。我尝试分解“(int = 0; i 我一直在下面收到此错误: 在这一点上,我不知道为什么会出错。在我的脑海中,文档中的光标应该在整数(帐号)之后,并且我对该部分没有任何疑问。 public static int readAccts(int[] acctNum, double[] balance, int maxAccts, File myinput, Scanner inputFile) throws IOException {
maxAccts = 0;
while(inputFile.hasNextInt()) {
//Test for reading integers accurately
//System.out.println(inputFile.nextInt());
maxAccts++;
inputFile.nextLine();}
//Test for maxAccts
System.out.println(maxAccts);
acctNum = new int[maxAccts];
balance = new double[maxAccts];
Scanner AccountFiller = new Scanner(myinput);
while(inputFile.hasNext());{
int i = 0;
while (i < maxAccts) {
acctNum[i] = AccountFiller.nextInt();
balance[i] = inputFile.nextDouble();
i++;}
//for (int i = 0; i < maxAccts; i++)
System.out.println(acctNum[1]);}
return maxAccts;
}
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
答案 0 :(得分:2)
您可能要修复while循环
您的第二个while循环如下所示:
while(inputFile.hasNext());{
while和花括号之间有一个分号,这意味着循环的主体为空,并且在完成循环之后,您可以在花括号内运行代码。 循环应如下所示:
while(inputFile.hasNext()) {
这会导致读取nextDouble的错误,因为我们只是消耗了扫描仪的源,直到没有下一个。
您可能还想再次检查一下如何读取文件,因为第一部分对我而言并没有多大意义,看来您只是跳过了文件中找到的所有整数(同时计算了跳过的次数) )