Мне нужна помощь для занятий в школе.случайные числа из массива в другой массив с разными правилами вхождения в java
Мне нужно создать массив с 6 случайными числами из следующего массива: montab[] = {1,2,3,4,5,6,7,8,9,10,25,50,75,100}
и со следующими правилами:
- числа
25,50,75,100
может происходить только один раз в массиве - номер
1
в10
может происходят только дважды в массиве
Я пробовал первое правило на данный момент, но в редких случаях я все еще получаю число более одного раза.
Вот мой код:
public class Exo7bis {
public static void main (String[] args){
Random random = new Random();
int montab[] = {1,2,3,4,5,6,7,8,9,10,25,50,75,100};
int[] ar1 = new int[6];
int j = 0, compteur25 = 0, compteur50 = 0, compteur75 = 0, compteur100 = 0;
for (int i = 0; i < ar1.length; i++) {
ar1[i] = (montab[new Random().nextInt(montab.length)]);
if (ar1[i] == 25) {
compteur25++;
if (compteur25 > 1) {
while (ar1[i] == 25)
ar1[i] = (montab[new Random().nextInt(montab.length)]);
}
}
if (ar1[i] == 50) {
compteur50++;
if (compteur50 > 1) {
while (ar1[i] == 50)
ar1[i] = (montab[new Random().nextInt(montab.length)]);
}
}
if (ar1[i] == 75) {
compteur75++;
if (compteur75 > 1) {
while (ar1[i] == 75)
ar1[i] = (montab[new Random().nextInt(montab.length)]);
}
}
if (ar1[i] == 100) {
compteur100++;
if (compteur100 > 1) {
while (ar1[i] == 100)
ar1[i] = (montab[new Random().nextInt(montab.length)]);
}
}
}
for (int i = 0; i < ar1.length; i++) {
System.out.print(ar1[i] +" ⎢ " + "\t");
}
}
}
Я знаю, что мои тесты не полностью правильно, я определил эту проблему, но я не могу найти правильное решение.
Если кто-то может мне помочь или посоветуйте, это будет круто.
Заранее благодарен!
Джереми
Привет, Спасибо за ваш ответ. Я не думал о том, чтобы поставить 0 раз больше, чем 25. У меня есть два небольших вопроса, первый из которых посвящен количеству переменных в главном коде. Это необходимо или мы можем удалить его. Это кажется бесполезным, поскольку мы не используем его позже в главном коде. Мой второй вопрос касается вашего метода, так как я новичок в java и для кодирования вообще я полностью понимаю это. У меня проблемы с вашей последней строкой: return count == 2? true: false; Не могли бы вы прокомментировать эту линию для меня, пожалуйста? Спасибо! – Jeremy
@Jeremy Нет, переменная count здесь не нужна, я поставил ее, потому что не был уверен, хотите ли вы '25,75,100' только один раз или каждый из них один раз. Вы можете удалить его там не нужно, и последнее утверждение в методе проверяет условие, если count == 2, затем он возвращает true else, возвращает false. Он называется тернарным оператором 'result = testCondition? value1: value2' –