Android. Java. Условие в Random.nextInt();

144
10 марта 2022, 22:30

Подскажите, как можно заменить мою проверку, на такую, чтобы она выполнялась сразу при рандоме в первой строке, если это возможно:

int type = new Random().nextInt(10) + 1;
while (type == previousType) {
  type = new Random().nextInt(10) + 1;
} 
previousType = type;

Если не понятно зачем это, то при первом выполнении это определяет тип уровня, а при повторном так же определяет его, но уже тип получается не равный предыдущему, то есть чтобы не было подряд одинаковых. Надеюсь не запутал.

Answer 1

Думаю, это то, что Вы имели в виду:

while ((type = new Random().nextInt(10) + 1) == previousType) {
       type = new Random().nextInt(10) + 1;
}   
previousType = type;
Answer 2

1)Не надо каждый раз создавать new Random() - это расточительство.

2)А проверку лучше заточить в отдельную функцию, к тому же цикл должен быть постфиксный.

3)При первом вызове функции лучше вызвать как: getNextType(-1)

private int getNextType(int previousType) {
   Random random = new Random();
   do {
       type = random.nextInt(10)+1;
   } while (type == previousType);
   return type;
}
READ ALSO
Нужно вызвать ошибку JAVA

Нужно вызвать ошибку JAVA

Напишите строку вызова этой функции с такой строкой-паролем, чтобы возникло какое-нибудь исключение

118
Какой контейнер использовать?

Какой контейнер использовать?

Какой контейнерный класс можно использовать как ранилище строк таблицы, в которую часто вставляют в начало и в середину? Варианты: ArrayList LinkedList...

208
правильно описать OnSaveInstanceState (Java, Android)

правильно описать OnSaveInstanceState (Java, Android)

Использую в приложении два TextView, кнопку Button и ExoplayerПодскажите как правильно сделать сохранение состояния приложения при нажатии кнопки "Назад"...

86
помогите выдает ошибку Undefined offset: 2

помогите выдает ошибку Undefined offset: 2

у меня проверяется значение двух разных массивов и если они совпадают то они удаляются

193