новичок здесь. У меня есть код для аукциона, и я хочу иметь возможность отклонить или распечатать ошибку для собаки, которая уже выставлена на аукцион.
private void startAuction() {
boolean current = false;
int auctionCount = 1;
do {
System.out.println("Dog name: ");
String dogName = scan.nextLine().toLowerCase().trim();
if (dogName.isEmpty()) {
System.out.println("Error: Name can't be empty.");
continue;
}
for (int i = 0; i < dogs.size(); i++) {
if (dogName.equals(dogs.get(i).getName())) {
auction.add(new Auction(dogName));
System.out.printf(dogName + " has been put up for auction in auction #%d", auctionCount);
System.out.println();
auctionCount++;
current = true;
return;
}else if (auction.get(i).getDogName().equals(dogName)) {
System.out.print("Error: Dog has already been put up for auction");
}
}
if (current == false) {
System.out.println("Error: no such dog in the register");
}
}while(true);
Все остальное работает нормально, кроме этой части:
}else if (auction.get(i).getDogName().equals(dogName)) {
System.out.print("Error: Dog has already been put up for auction");
Я действительно не знаю, почему, но он просто игнорирует все повторяющиеся входы. Любые идеи? Спасибо!
Чтобы навалить @azurefrog, это классическая возможность использовать отладчик и изучить содержимое dogName и список собак, которых вы ищете.
@azurefrog да, я должен распечатать «ошибку», когда пользователь вводит одно и то же имя.
Вы можете использовать HashSet для обнаружения дубликатов.




Итератор i предназначен для массива собак, но в «иначе, если» вы используете аукцион.get(i). Это значит, что это dogs.get(i)?
нет, я должен проверить аукционный список, если имя собаки там уже есть. Вот почему я использовал аукцион.get(i)
Извините, я сказал это неловко. Позвольте мне попытаться перефразировать... так что вы перебираете всех своих собак следующим образом: в этой итерации. Когда вы ссылаетесь на аукцион, вы используете «i»… но я считаю, что это относится только к массиву собак. Может ли это быть частью проблемы?
Вы уверены, что это действительно повторяющиеся значения? Нет лишних пробелов или непечатаемых символов? Я бы предложил пройтись по вашей программе в отладчике и проверить, какие значения вы на самом деле сравниваете.