ВОПРОС:Для каждого цикла не печатается первая запрошенная линия
Когда я запускаю это, все работает нормально. Предположим, что мои выбранные ID: 0001, 0002, 0003, 0004. И их информация: info1, info2, info3, info4. Если я прохожу 0002 в сканере, я получаю информацию2. Как и следовало ожидать, но если я перейду в 0001, я ожидаю получить информацию1, но вместо этого ничего не получаю. Я пробовал это с массивом фиксированного размера 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()
методу информации, и она работала. Это дало мне идентификатор «0001» из Gameobject. Однако только прохождение в «0001» не было.
Возможно, ваш файл 'objects.txt' имеет неправильный формат или что-то в этом роде. Пожалуйста, включите его в свой пост. – Lefteris008
* «ВОПРОС - это все, что находится внизу». * Было бы гораздо лучше поставить его наверху. –
@DavidWallace: Предположительно, он означает расширенный цикл 'for' в методе' info'. –