Софтуерно Инженерство
Loading...
+ Нов въпрос
a.angelov avatar a.angelov 1319 Точки

[Technical Issue] Java - Проблем с for цикъл

Имам следния цикъл с декларирани две променливи, които променям на всяка итерация:

for (int i = 0, j = number.length() - 1; i <= number.length() / 2; i++, j--) { и т.н. /уточнение - number е от тип стринг/

В Еклипс оцветеното в червено ми свети и като коментар за грешка изписва - Dead code - и съответно не може да се изпълни програмата.

Не мога да разбера каква е причината..., някой ако може да помогне...

Тагове:
0
Java Advanced 03/09/2014 21:58:25
Anonymous:
Solution found.
HPetrov avatar HPetrov 822 Точки
Best Answer

Това може да се дължи на нещо в цикъла което да прекъсва програмата или да нарушава по някакъв начин итерирането. Ако си споделиш целия код в цикъла може по-добре да ти помогнем.

Edit:

Тоя "return" ти прави проблемите. Изведи го по добре като булева променлива и само я промени когато трябва и чупи цикъла ако има нужда. Идеята на този return да пищи горе е, че може да не завърти даже 1 път цикъла. Ползвай break за целта и просто връщай в зависимост от някаква булева променлива.

1
02/09/2014 23:30:40
quickben avatar quickben 973 Точки

offtopic: да те попитам за обща култура dead code еквивалента на unreachable code detected във Visual Studio ли е ? :)

0
HPetrov avatar HPetrov 822 Точки

Нещо подобно. Не същото но много подобно. Разликата е, че unreachable code не се компилира докато dead code се компилира и просто се игнорира от компилатора.

1
02/09/2014 23:29:55
a.angelov avatar a.angelov 1319 Точки

Прав си - ето КОДА.

Ето и КОДЪТ след корекция /явно ми се спи много защото горния код, логично още на първата итерация връща резултат от метода и изобщо не прави това което искам от него :)/

0
02/09/2014 23:41:49
nickpanaiotov avatar nickpanaiotov 21 Точки

Защо не си декларираш втората променлива в тялото на цъкъла и там да си я ъпдейтваш? 

Иначе вярно изглежда. Пробвай да размениш i и j  при ъпдейта.

for (int i = 0, j = (number.length() - 1); i <= (number.length() / 2); j--,i++) {

}

 

0
a.angelov avatar a.angelov 1319 Точки

Проблема е решен - причината е както по-горе НРеtrov е написал - имам в блока на цикъла return и от там се чупи. Изведох нова булева променлива в началото на метода и на нея сменям стойността - true или false и не ползвам return в цикъла.

0