ISSUE:For-each loop will not print the first requested line
當我運行這個時,一切工作正常。 假設我選擇的ID是:0001,0002,0003,0004. 以及它們的信息:info1,info2,info3,info4。 如果我在掃描儀中通過0002,我會得到info2。正如你所期望的,但如果我通過0001,我期望得到info1,但是我什麼也得不到。我嘗試了一個固定大小的數組3,它工作得很好。我改變了一個ArrayList,因爲我不知道這個文件會有多長。爲什麼會發生?
我是一個編程新手,所以請原諒我缺乏關於在哪裏尋找這些東西的知識。
我的程序所做的是讀取文件並將所有行添加到ArrayList,然後要求用戶輸入,輸入格式應爲xxxx或4個字符。
我做了作爲一個例子如下所示,上線沒有多餘的空格的文本文件:
0001
info1
4
0002
info2
5
0003
info3
9
0004
info4
10
0005
info5
3
主類:
public class Main {
public static ArrayList<Gameobject> games = new ArrayList<>();
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(new File("objects.txt"));
String id, info;
int amount;
while(sc.hasNextLine()) {
id = sc.nextLine();
info = sc.nextLine();
amount = Integer.parseInt(sc.nextLine());
Gameobject s = new Gameobject(id, info, amount);
games.add(s);
System.out.println(s.getId());
}
sc = new Scanner(System.in);
info(sc.next());
}
的信息方法是如下。
public static void info(String id){
for(Gameobject s : games){
if(s.getId().equals(id)){
System.out.println(s.getInfo());
}
}
}
和類遊戲對象
public class Gameobject {
String id, info;
int amount;
Gameobject(String id, String info, int amount) {
this.id = id;
this.info = info;
this.amount = amount;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
我做了一些測試,並在games.get(0).getId()
傳遞給信息的方法和它的工作。這讓我從Gameobject獲得了ID「0001」。然而,只是通過「0001」沒有。
也許你的'objects.txt'文件格式不正確。請將其添加到您的帖子中。 – Lefteris008
*「問題始終處於最底層。」*將其置於頂端會好得多。 –
@DavidWallace:推測他是指'info'方法中增強的'for'循環。 –