在数组中存储对象

时间:2014-03-05 04:52:40

标签: java class object

我的代码应该读取一个序列,直到空行。我坚持将对象存储在numItem的数组中,然后增加numItem

public static int readInput(Scanner myScanner, String[] input) {
    boolean streamEnded = false;
    int numItem = 0;
    while (!streamEnded && myScanner.hasNext()) {
        String name = myScanner.nextLine();
        String id = myScanner.nextLine();
        if (name.length() == 0 && id.length() == 0) {
            streamEnded = true;
        } else {
            input[numItem] = name;
            input[numItem] = id;
            numItem++;
        }

        Person personTest = new Person(name, id);
        persons[numItem]

    }
    return numItem;

 }

}

2 个答案:

答案 0 :(得分:0)

一些事情:

  1. numItem增量放在if/else语句之外。它应该在persons[numItem]之后的while循环结束时进行。

  2. 不确定这个:persons[numItem]应该做什么。如果您要将personTest对象存储在该索引处,则它应为persons[numItem] = personTest;

  3. 除非您知道您的阵列中只会创建10个人,否则我会使用ArrayList,这样您就可以根据需要添加尽可能多的Person个对象。

  4. 我没有逐行检查,这些只是我的一般观察。我很确定你的代码不会按原样编译,特别是这个:persons[numItem]。希望这有点帮助。

答案 1 :(得分:0)

我认为你正在寻找类似的东西,

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);
    List<Person> persons = new ArrayList<Person>();

    while (myScanner.hasNext()) {
        String inp = myScanner.nextLine();

        if (inp.length() <= 0) {
            break;
        }

        String[] parts = inp.split(" ");
        persons.add(new Person(parts[0], parts[1]));
    }

    while (myScanner.hasNext()) {
        String inp = myScanner.nextLine();

        if (inp.length() <= 0) {
            break;
        }

        String[] parts = inp.split(" ");
        Person person = findPerson(persons, parts[0]);
        person.changeBalance(Double.parseDouble(parts[1]));
        System.out.println(person);
    }

}

private static Person findPerson(List<Person> persons, String id) {
    for (Person person : persons) {
        if (person.getId().equals(id)) {
            return person;
        }
    }
    return new Person("", "");
}

在这里,我使用了ArrayList代替数组来简化操作。每次天平变化时我都会打印这个人。但是,您可以将其移出循环以匹配您的输出。