2015-05-05 5 views
2

Я хочу отображать кратные 5 от 0 до 30, но не используя обычную логику. Попробовал оператор Ternary для отображения результата.Продолжить или перерыв не работал в тройном операторе

 int i=0; 
    while(++i<=30) 
    System.out.print(i%5==0?i:" "); 

Выход

 5 10 15 20 25 

Я не хочу никаких пробелов быть напечатан так, а не на «» в приведенном выше коде, я попытался с продолжить заявление, чтобы продолжить цикл, но это не сработало.

System.out.print(i%5==0?i:continue); 

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

+0

Вы попробовали пустую строку? 'System.out.print (i% 5 == 0? I:" ");' –

+0

Да, это действительно работает –

+1

Я отметил это как дубликат, так как слишком многие считают, что оператор 'ternary' - это еще один способ записи оператор 'if-else'.Это неправда, и вы не должны пытаться обучать ее повсюду. Прочтите принятый ответ для дубликата, чтобы узнать полную правду о тройном операторе. – Kayaman

ответ

0

Проблема с System.out.println(). Поскольку System.out.println() всегда ожидают чего-то, что можно печатать eg.- String, int, byte и т.д.

Но здесь continue это утверждение для управления потоком управления программой и в возвращает ничего.

В этом контексте вам не нужно добавлять оператор continue, так как поток автоматически выполняет то, что вы ожидаете. И так как вы хотите избежать пробелов, вы можете это сделать -

int i=0; 
while(++i<=30) 
    System.out.print(i%5==0?i : ""); 
1

троичный оператор ожидает, что (в данном случае) строку, поэтому для достижения ваших потребностей вы должны напечатать пустой String если условие ложно:

System.out.print(i%5==0?i:""); 
0

Поскольку System.out.print(continue) не является действительным. Проверьте, работает ли условный оператор java tutorials.

Тернарный оператор можно рассматривать как условное задание. В вашем случае, с continue вы не назначая ничего (с параметром System.out.print())

Вы можете просто использовать "" вместо " " и вы получите ожидаемый результат

0

Вы не можете вернуть ключевое слово! Даже если это действительно сработало, вы все равно передадите его в System.out.print, так что вы ожидаете, что будет напечатана строка длины/длины?

Это эквивалентно:

System.out.print(i%5 == 0 ? "" + i : ""); 
1

Просто используйте пустую строку

System.out.print(i%5==0?i:""); 
-1

Вам нужен аргумент метода Println(), а не директивы.

Но я думаю, что это уборщик, чтобы использовать «если» вместо: if (i%5 == 0) System.out.println("" + i);

+0

Ваш пример не будет работать. Тернарный оператор не является альтернативой, если, например, это подтверждается в этом вопросе. – Kayaman

+0

@ Кайаман, ты прав. Сожалею. Я отредактирую свой ответ. (испорченный C ;-) – Ronald

Смежные вопросы