нужна помощь с кодом типа Random на java

176
22 июля 2019, 08:00

Я сам осваивать джава стал недавно, так что прошу простить за может тупой или неправильный вопрос . Я хочу, чтоб после того, как рандомайзер мне выдал число (от 1 до 9), то взависимости от того, какое это число, запустился условный оператор, но почему то он не работает и выделяется красным. Вот тот код, который у меня на данный момент:

Random a = new Random();
    a.nextInt(10);
if (a == 2);
System.out.println("какой то текст 1");
if (a == 6)
System.out.println("какой то текст 2");
//и так далее

Заранее спасибо.

Answer 1

Правильно будет так:

Random a = new Random();
int i = a.nextInt(10);
if (i == 2)
    System.out.println("какой то текст 1");
if (i == 6)
    System.out.println("какой то текст 2");

Random a = new Random(); только создает генератор случайных чистел, а вот вызов a.nextInt(10); возвращает вам случайное число, которое уже надо сравнивать

А еще у вас вот тут коварная ошибка(лишняя ;):

Answer 2

Вся соль в том, что в строке Random a = new Random(); создается ссылка на объект класса Random, т.е. она не содержит какого либо целочисельного значения. В строке a.nextInt(10); вы вызываете метод класса Random, который непосредственно и возвращает целочисельное значение. Как уже написали, выше нужно создать примитив типа int, в который вы сохраните результат, и уже его подставляете в условный оператор.

Answer 3

Во-первых в строке

if (a == 2);

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

 if (a == 2){
 System.out.println("какой то текст 1");
 }

Касательно темы вопроса. Есть два пути решения проблемы 1) Объявить переменную типа int и подставлять в условие ее, вот так

 Random a = new Random();
 int x = a.nextInt(10);
 if (x == 2){
 System.out.println("какой то текст 1");
 }
 if (x == 6){
 System.out.println("какой то текст 2");
 }

2) Воспользоваться методом equals вместо "==", вот так

 Random a = new Random();
 if (a.equals(2)){
 System.out.println("какой то текст 1");
 }
 if (a.equals(6)){
 System.out.println("какой то текст 2");
 }
Answer 4
if (a == 6) {
    System.out.println("some text");
}

Условный оператор выглядит так:

if (условие) {
    // То, что надо сделать
}

Также можно:

if (условие) {
    // 1
} else {
    // 2
}

А если слишком много условий, то используйте Оператор switch, 'компактный if' Также настоятельно Вам рекомендую пользоваться поисковиком, там есть очень много статей и материала, которые Вам помогут.

READ ALSO
Метод print() класса PrintStream

Метод print() класса PrintStream

Дорогие камрады! :)

145
Объект события в java

Объект события в java

Для чего нужен объект события?(аргумент реализуемого метода интерфейса)

150
Подключение Google Maps Java и Directions Api

Подключение Google Maps Java и Directions Api

Доброй ночиИмеется проект на Spring Boot

151
Не запускается консольное приложение Windows из приложения Java

Не запускается консольное приложение Windows из приложения Java

Есть кроссплатформенная консольная утилита ring (ставится для работы с программными лицензиями 1С: Предприятия)

182