并行数组和从文件读取整数/双精度的问题

时间:2019-04-11 17:57:19

标签: java arrays arraylist java.util.scanner

我对并行数组和让程序读取整数和双精度有问题。例如,我有一个具有以下值的文本文件:

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)

在这一点上,我不知道为什么会出错。在我的脑海中,文档中的光标应该在整数(帐号)之后,并且我对该部分没有任何疑问。

1 个答案:

答案 0 :(得分:2)

您可能要修复while循环

您的第二个while循环如下所示:

while(inputFile.hasNext());{

while和花括号之间有一个分号,这意味着循环的主体为空,并且在完成循环之后,您可以在花括号内运行代码。 循环应如下所示:

while(inputFile.hasNext()) {

这会导致读取nextDouble的错误,因为我们只是消耗了扫描仪的源,直到没有下一个。

您可能还想再次检查一下如何读取文件,因为第一部分对我而言并没有多大意义,看来您只是跳过了文件中找到的所有整数(同时计算了跳过的次数) )