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

Тема в разделе "Java", создана пользователем @rtem, 5 янв 2009.

  1. @rtem

    @rtem Гость

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

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

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    юзай Integer.compareTo
    или просто int вместо Integer

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

    @rtem Гость

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

    ничего не поменялось
     
  4. etc

    etc Гость

    Сатурну больше не наливать. :huh:
     
  5. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    http://java.sun.com/docs/books/jls/third_e...ions.html#15.25

     
  6. @rtem

    @rtem Гость

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

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    это разные языковые кострукиции с похожей семантикой.

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

    @rtem Гость

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

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    Код (Text):
    if (j1 < j2) {
    out.print("j1 < j2");
    } else{
    out.print("j1 > j2");
    }
    чем не устроило?
     
  10. @rtem

    @rtem Гость

    меня бы вполне устроило, но указывалось, что для проверки нужно использовать именно тернарный оператор.
     
  11. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    а если не секрет, зачем?
     
  12. @rtem

    @rtem Гость

    образование :huh:
     
  13. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
  14. @rtem

    @rtem Гость

    спасибо, как раз думал, как бы мне параллельно повысить уровень английского языка :huh:
     
  15. bemol

    bemol Гость

    А если так ?

    Код (Text):
    System.out.println(i < j ? "i < j" : "i > j");
     
  16. @rtem

    @rtem Гость

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

    Kirk Гость

    Хм... По моему вы запутались. :) Изначально задача поставлено намного проще

    [codebox]Random rand = new Random();
    System.out.println(rand.nextInt() != rand.nextInt());[/codebox]
     
Загрузка...

Поделиться этой страницей