Ausgabe:For-jeder Schleife wird nicht die erste angeforderte Zeile
Wenn ich das laufe alles funktioniert gut. Sagen wir, dass meine gewählten IDs sind: 0001, 0002, 0003, 0004. Und ihre Infos: info1, info2, info3, info4. Wenn ich 0002 im Scanner passiere, bekomme ich info2. Wie Sie erwarten würden, aber wenn ich 0001 übergebe, würde ich erwarten, Info1 zu bekommen, aber stattdessen bekomme ich nichts. Ich habe dies mit einer Reihe von festen Größe 3 versucht und es hat gut funktioniert. Ich wechselte zu einer ArrayList, weil ich nicht weiß, wie lange die Datei sein würde. Warum passiert das?
Ich bin ein Neuling in der Programmierung, also bitte verzeihen Sie meinen Mangel an Wissen darüber, wo man nach diesen Dingen suchen.
Was mein Programm tut, liest in einer Datei und fügt alle Zeilen zu einer ArrayList und fragt dann nach Eingabe vom Benutzer, sollte die Eingabe im Format von xxxx oder 4 Zeichen sein.
Die Textdatei ich als ein Beispiel aus sieht wie folgt aus, keine zusätzlichen Leerzeichen auf den Linien:
0001
info1
4
0002
info2
5
0003
info3
9
0004
info4
10
0005
info5
3
Die Hauptklasse:
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());
}
Die Info Methode ist als folgt.
public static void info(String id){
for(Gameobject s : games){
if(s.getId().equals(id)){
System.out.println(s.getInfo());
}
}
}
Und die Klasse Gameobject
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;
}
}
Ich habe einige Tests und in games.get(0).getId()
zum Eintrag Methode übergeben und es funktionierte. Das brachte mir die ID "0001" vom Gameobject. Aber nur "0001" passierte nicht.
Vielleicht ist Ihre Datei 'objects.txt' falsch formatiert oder so. Bitte, fügen Sie es in Ihre Post ein. – Lefteris008
* "Ausgabe ist ganz unten." * Es wäre viel besser, es an die Spitze zu setzen. –
@DavidWallace: Vermutlich meint er die erweiterte 'for' -Schleife in der' info' Methode. –