Парни, такая беда. Я не понимаю в чем тут ошибка. Мне нужно, чтобы в цикле, на выходе 2 числа были нечетными, но почему то, цикл заканчивается, когда одно число четное, на второе он забивает. Я пробовал как && , так и & , я понимаю их разницу, но это не помогает. Просьба не выпендриваться, а доходчиво обьяснить, что я тут делаю не так. С меня печенье, у меня мама их вкусно готовит
class Test{
public static void main(String[] args){
int i,j;
do {
i = (int) (Math.random()*10);
j = (int) (Math.random()*10);
} while ((i % 2) != 0 & (j % 2) != 0);
System.out.println("i = " + i + " j = " + j);
}
}
Вывод такой (Несколько примеров)
i = 3 j = 2
i = 6 j = 7
i = 4 j = 3
Ошибка в алгоритме. Нужно делать цикл от обратного, т.е. пока хотя бы одно число четное :
do {
i = (int) (Math.random()*10);
j = (int) (Math.random()*10);
} while ((i % 2) == 0 || (j % 2) == 0);
я бы попробовал while (!(( ((i % 2) != 0) && ((j % 2) != 0) ))
но рекомендую использовать формулу
int i = ((int) (Math.random()*10))*2+1;
int j = ((int) (Math.random()*10))*2+1;
тут числа будут генерироваться сразу нечетными
a = 2n + 1
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости