数组填充为null而不是名称,而不是数字

时间:2014-04-25 20:55:11

标签: java arrays file null

我需要使用文本文件中的名称和相应的帐户余额填充两个单独的数组。 该文件看起来像这样

10
Helene 1000
Jordan 755
Eve 2500
Ken 80
Andrew 999
David 1743
Amy 12
Sean 98
Patrick 7
Joy 14

其中10是帐户数

import java.util.*;
import java.io.*;
import java.util.Arrays;

public class bankaccountmain {

    public static void main(String[] args) throws FileNotFoundException {
        Scanner inFile = null;
        try {
            inFile = new Scanner(new File("account.txt"));
            ;
        } catch (FileNotFoundException e) {
            System.out.println("File not found!");

            System.exit(0);
        }
        int count = 0;
        int accounts = inFile.nextInt();
        String[] names = new String[accounts];
        int[] balance = new int[accounts];
        while (inFile.hasNextInt()) {
            inFile.next();
            names[count] = inFile.next();
            inFile.nextInt();
            balance[count] = inFile.nextInt();
            count++;
        }
        System.out.println(Arrays.toString(names));
        System.out.println(Arrays.toString(balance));
    }
}

3 个答案:

答案 0 :(得分:1)

按如下方式更改循环。更改while()子句并注释掉2行。

    while (inFile.hasNext()) {
        //inFile.next();
        names[count] = inFile.next();
        //inFile.nextInt();
        balance[count] = inFile.nextInt();
        count++;
    }

答案 1 :(得分:1)

这个

int accounts = inFile.nextInt();

使用此令牌

10

然后你做

while (inFile.hasNextInt()) {

但文件中的下一个标记是

\nHelene 1000

因此方法调用将返回false,因为没有下一个int并且循环将退出。

也许你应该检查一下整行。

答案 2 :(得分:1)

您的循环定义不明确。

您正在检查是否有下一个int而不是下一个令牌,并且消耗了您不打算使用的行。

请尝试将其作为循环:

    while (inFile.hasNext()) {
        names[count] = inFile.next();
        balance[count] = inFile.nextInt();
        count++;
    }