Ошибки при использовании If-then-else

  • Автор темы @rtem
  • Дата начала
@

@rtem

Гость
#1
привет! такая проблема использую в программе тернарный оператор ? : но при компиляции получаю ошибки вот та часть кода, где я его использую

Код:
Integer j1;
Integer j2;
Random rand = new Random();

j1 = rand.nextInt();
j2 = rand.nextInt();

j1 < j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
и вот при компиляции выдает такие ошибки
Код:
javac Rand.java
Rand.java:28: > expected
j1 < j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
^
Rand.java:28: not a statement
j1 < j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
^
Rand.java:28: ';' expected
j1 < j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
^
3 errors
меняю в
Код:
j1 < j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
на
Код:
j1 > j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
пишет только
Код:
javac Rand.java
Rand.java:28: not a statement
j1 > j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
^
1 error
Подскажите, что я не так делаю и еще вопрос какая разница при использовании < или > это так критично???
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#2
юзай Integer.compareTo
или просто int вместо Integer

в ява операторы <, > определены только для примтивовов.
 
@

@rtem

Гость
#3
сменил Integer -> int все равно ошибки такого плана

ничего не поменялось
 
@

@rtem

Гость
#6
Сатурну больше не наливать. smile.gif
в смысле?
почему тогда так работает
Код:
int j1;
int j2;
j1 = rand.nextInt();
j2 = rand.nextInt();
if (j1 < j2) 
print.out("j1 < j2");
else
print.out("j1 > j2");
а с " ? : " нет, ведь насколько я понял то они как бы тождественны. Или я не туда копаю???
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#7
это разные языковые кострукиции с похожей семантикой.

в случае тернарного опретора требуется, что бы возвращался результат отличный от void, поэтому следующая коснтрукция для него верна
int i = (5 > 1) ? 1 : 0;
а такая нет
(5 > 1) ? System.out.println(1) :System.out.println(0), потому как println имеет следующую сигнатуру void println(bla, bla)
 
@

@rtem

Гость
#8
во общем сделал, приблизительно то, что хотели правда как то сделал через задницу :huh: мне что то такое решение не понравилось
Код:
r1 = (j1 < j2) ? 1 : 0;		 
if (r1 == 1) print.out(" j1 < j2 ");
if (r1 == 0) print.out(" j1 > j2 ");
Спасибо за помощь.
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#9
Код:
if (j1 < j2) {
out.print("j1 < j2");
} else{
out.print("j1 > j2");
}
чем не устроило?
 
@

@rtem

Гость
#14
спасибо, как раз думал, как бы мне параллельно повысить уровень английского языка :huh:
 
@

@rtem

Гость
#16
bemol
нормально, спасибо. но как говорится дорого ложка к обеду, но все равно очень благодарен.
 
K

Kirk

Гость
#17
Integer j1;
Integer j2;
Random rand = new Random();

j1 = rand.nextInt();
j2 = rand.nextInt();

j1 < j2 ? System.out.println(j1 < j2) : System.out.println(j1 > j2);
Хм... По моему вы запутались. :) Изначально задача поставлено намного проще

[codebox]Random rand = new Random();
System.out.println(rand.nextInt() != rand.nextInt());[/codebox]