Проверьте этот бит кода:
int min = rolls.get(0);
int index = 0;
for(int x = 0; x<rolls.size(); x++){
if(rolls.get(x) < min){
min=rolls.get(x);
index = x;
System.out.println("Smallest: " + min);
}
}
Что произойдет, если rolls.get(0);
ваш минимальный бросок? В этом случае if(rolls.get(x) < min)
всегда будет ложным, и вы никогда не напечатаете «Smallest ...».
Также обратите внимание, что каждый раз, когда вы находите бросок, который меньше, чем последний, на который вы смотрели, вы снова выводите «Smallest ...», поэтому, если у вас есть несколько кубиков в порядке убывания, вы напечатаете эту строку несколько раз.
Установите исходное значение min
равным 7, чтобы выгарантированно иметь минимальное значение, которое меньше, чем начальное состояние. И затем, вместо печати внутри цикла, сохраните min и напечатайте «Smallest ...» после завершения цикла:
// Be aware that this code doesn't work correctly if your List is empty.
int min = 7; // You could also set this to rolls.get(0) and start your loop at 1
for (int x = 0; x < rolls.size(); x++) {
if (rolls.get(x) < min) {
min = rolls.get(x);
}
}
System.out.println("Smallest: " + min);
(я также удалил index
, потому что он нигде не используетсяв вашем коде).
Если вы хотите быть немного более современным с этим (и также более надежным), вы также можете сделать:
rolls.stream()
.min(Integer::compareTo)
.ifPresent(min -> System.out.println("Smallest: " + min));
Это будет обрабатыватьслучай, когда rolls
пустой, просто ничего не печатая.