我收到一个有姓名(表格)和座位数的文件:
table1 6
table2 2
table3 4
我有一个班级预订数组,它将包含姓名和座位。我无法将座位数转换为阵列。我该怎么做呢?
public class Reservable {
first=name&second[]=a&second[]=b&third[x]=1&third[y]=2&third[z]=3
这是我的预订课程:
protected String id;
private Reservation[] arrayRes = new Reservation[10];
public Reservable (Scanner fileIn) {
while(fileIn.hasNext()) {
id = fileIn.next();
for(int i = 0; i < arrayRes.length; i++) {
int seat = fileIn.nextInt();
arrayRes[i] = seat;
}
}
}
答案 0 :(得分:1)
您可以逐行阅读,因为您的文件已按行预订。
我建议你有一个带有两个参数的预留构造函数(name和nbSeat)
注意:您的预订数组具有固定大小:10。如果您的文件超过10个元素,则ArrayIndexOutOfBoundsException
将会上升。
如果预订数量可能高于10或可变,则应使用List而不是数组。
protected String id;
private Reservation[] arrayRes = new Reservation[10];
public Reservable (Scanner fileIn) {
int i=0;
while(fileIn.hasNextLine()) {
String line = fileIn.nextLine();
String[] token = line.split("\\s");
String name = token[0];
int nbSeat= Integer.valueOf(token[1)];
// add in your array
Reservation reservation = new Reservation(name,nbSeat);
arrayRes[i] = reservation ;
}
i++;
}
预订:
public class Reservation{
public Reservation(String name, int nbSeat){
this.name=name;
this.nbSeat=nbSeat;
}
}
答案 1 :(得分:0)
您需要向我们展示您的预订类的外观,但如果它使用传统的getter和setter,这是正确的方法:
public Reservable (Scanner fileIn) {
while(fileIn.hasNext()) {
for(int i = 0; i < arrayRes.length; i++) {
int seat = fileIn.nextInt();
arrayRes[i].setSeat(seat);
id = fileIn.next();
arrayRes[i].setId(id);
}
}
}