我的代码应该读取一个序列,直到空行。我坚持将对象存储在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;
}
}
答案 0 :(得分:0)
一些事情:
将numItem
增量放在if/else
语句之外。它应该在persons[numItem]
之后的while循环结束时进行。
不确定这个:persons[numItem]
应该做什么。如果您要将personTest对象存储在该索引处,则它应为persons[numItem] = personTest;
。
除非您知道您的阵列中只会创建10个人,否则我会使用ArrayList
,这样您就可以根据需要添加尽可能多的Person
个对象。
我没有逐行检查,这些只是我的一般观察。我很确定你的代码不会按原样编译,特别是这个: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
代替数组来简化操作。每次天平变化时我都会打印这个人。但是,您可以将其移出循环以匹配您的输出。