我在并行数组和让程序读取整数和 double 方面遇到问题。例如,我有一个包含以下值的文本文件:
1234 99.58
5678 1854.99
第一个数字是帐号,第二个数字是帐户余额。我不知道如何将它们放入并行数组(int[] accountnumber,double[] Balance),同时查看理想情况下 10 个以上帐户和余额的列表。
我尝试过单独填充数组,但没有成功,这感觉不是最有效的方法。我尝试分解“(int = 0; i < maxAccts; i++)”,这样我就可以使用“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)
此时我不知道为什么会出错。在我的脑海中,文档中的光标应该位于整数(帐号)之后,并且我没有遇到该部分的问题。
最佳答案
您可能想修复 while 循环
你的第二个 while 循环如下所示:
while(inputFile.hasNext());{
在 while 和大括号之间有一个分号,这意味着循环体是空的,循环完成后,您将运行大括号内的代码。 循环应该是这样的:
while(inputFile.hasNext()) {
这会导致读取 nextDouble 的错误,因为我们刚刚消耗了扫描仪的源,直到没有下一个。
您可能还想再次检查您想要如何读取文件,因为第一部分对我来说并没有多大意义,看来您只是跳过了文件中找到的所有整数(同时计算您跳过了多少次)
关于java - 并行数组和从文件读取整数/ double 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55638600/