Re[7]: IntelliJ Idea 'Invert if'
От: NotGonnaGetUs  
Дата: 07.10.05 12:50
Оценка: 9 (2)
Здравствуйте, zubr, Вы писали:

Z>Здравствуйте, Donz, Вы писали:

D>>Баг-репорт то JetBrains'у отправили? Рассуждениями на форуме РСДН исправления не добьёшься

Z>нет.


Z>думал что ошибка где то у меня.


Здесь нет бага. Т.е. всё вполне объяснимо

Переменная а — не используется после if => преобразования ничего не портит.

Добавь после "а=5;" строчку, в который будет использоваться "а" и сравни результат преобразования.
IntelliJ Idea 'Invert if'
От: zubr Россия  
Дата: 07.10.05 09:41
Оценка:
Всем привет.

был у меня приблизительно следующий кусок кода...
я попробовал сделать Invert if.

long a = 6l;
if (a == 0) {
    if (false)
        return;
}
a = 5;


и получил...

long a = 6l;
if (a != 0) {
    a = 5;
} else {
    if (false)
        return;
}


в первом случае переменная a всегда будет после кода равна 5! а во втором случае уж как получится...
может я просто чего то не понимаю?
Re: IntelliJ Idea 'Invert if'
От: nashav0  
Дата: 07.10.05 09:51
Оценка:
Здравствуйте, zubr, Вы писали:

Z>long a = 6l;

Z>if (a == 0) {
Z> if (false)
Z> return;
Z>}
Z>a = 5;

Z>и получил...


Z>long a = 6l;

Z>if (a != 0) {
Z> a = 5;
Z>} else {
Z> if (false)
Z> return;
Z>}


Z>в первом случае переменная a всегда будет после кода равна 5! а во втором случае уж как получится...

Z>может я просто чего то не понимаю?
Ну так понятно, какой же это инверт? в первом случае у тебя a=5 вообще в блок if не входило а во втором уже входить начало
т.е. первый раз у тебя должно было бы быть
long a = 6l;
if (a == 0) {
if (false)
return;
}
else a = 5;
Re[2]: IntelliJ Idea 'Invert if'
От: zubr Россия  
Дата: 07.10.05 10:19
Оценка:
Здравствуйте, nashav0, Вы писали:

попробуем вот так
long a = 6l;
if (new Random().nextInt() == 3) {
    a = 99;
    if (false)
        return;
    a = 10;
} //Здесь else нету!
a = 5;


в этом участке кода возможные выходные значения a : {5, 99}

получим

long a = 6l;
if (new Random().nextInt() != 3) {
    a = 5;
} else {
    a = 99;
    if (false)
        return;
    a = 10;
}


а в этом {5, 10, 99}

P.S.: Idea 4.5.4 + в реальном куске кода используються переменные класса.
Re[3]: IntelliJ Idea 'Invert if'
От: investigator Россия  
Дата: 07.10.05 10:39
Оценка:
Здравствуйте, zubr, Вы писали:

Z>попробуем вот так

Z>
Z>long a = 6l;
Z>if (new Random().nextInt() == 3) {
Z>    a = 99;
Z>    if (false)
Z>        return;
Z>    a = 10;
Z>} //Здесь else нету!
Z>a = 5;
Z>


Шаг номер один — сделаем так, что бы else появился
long a = 6l;
if (new Random().nextInt() == 3) {
    a = 99;
    if (false)
        return;
    a = 10;
    a = 5;
} else
    a = 5;


Шаг номер два — инвертируем
long a = 6l;
if (new Random().nextInt() != 3) {
    a = 5;
} else {
    a = 99;
    if (false)
        return;
    a = 10;
    a = 5;
}


Удачи
Re[3]: IntelliJ Idea 'Invert if'
От: DrZubr Беларусь  
Дата: 07.10.05 11:29
Оценка:
Здравствуйте, zubr, Вы писали:


Z>попробуем вот так

Z>
Z>long a = 6l;
Z>if (new Random().nextInt() == 3) {
Z>    a = 99;
Z>    if (false)
Z>        return;
Z>    a = 10;
Z>} //Здесь else нету!
Z>a = 5;
Z>

Z>в этом участке кода возможные выходные значения a : {5, 99}

Всегда на выходе 5.

Z>получим


Z>
Z>long a = 6l;
Z>if (new Random().nextInt() != 3) {
Z>    a = 5;
Z>} else {
Z>    a = 99;
Z>    if (false)
Z>        return;
Z>    a = 10;
Z>}
Z>

Z>а в этом {5, 10, 99}

Здесь на выходе уже или 5 или 10.

Судя по всему бага. IDEA 5.0.2 build 3511.
... << RSDN@Home 1.2.0 alpha rev. 618>>
ICQ [168117153]
Re[4]: IntelliJ Idea 'Invert if'
От: zubr Россия  
Дата: 07.10.05 11:45
Оценка:
Здравствуйте, DrZubr, Вы писали:

DZ>Здравствуйте, zubr, Вы писали:


Skipped...
Z>>в этом участке кода возможные выходные значения a : {5, 99}
DZ>Всегда на выходе 5.
да, я во внутреннем if ставил true/false... думал от него зависит какие то функции вводил потому получалось {5, 99}
Skipped...
Z>>а в этом {5, 10, 99}
DZ>Здесь на выходе уже или 5 или 10.
да согласен.
DZ>Судя по всему бага. IDEA 5.0.2 build 3511.
а у меня 4.5.4 build 2253
Re[5]: IntelliJ Idea 'Invert if'
От: Donz Россия http://donz-ru.livejournal.com
Дата: 07.10.05 12:08
Оценка:
Здравствуйте, zubr, Вы писали:

DZ>>Судя по всему бага. IDEA 5.0.2 build 3511.

Z>а у меня 4.5.4 build 2253

Баг-репорт то JetBrains'у отправили? Рассуждениями на форуме РСДН исправления не добьёшься
Re[6]: IntelliJ Idea 'Invert if'
От: zubr Россия  
Дата: 07.10.05 12:16
Оценка:
Здравствуйте, Donz, Вы писали:
D>Баг-репорт то JetBrains'у отправили? Рассуждениями на форуме РСДН исправления не добьёшься

нет.

думал что ошибка где то у меня.
Re: IntelliJ Idea 'Invert if'
От: M.Faith Германия  
Дата: 07.10.05 15:02
Оценка:
Здравствуйте, zubr, Вы писали:

Z>Всем привет.


Z>был у меня приблизительно следующий кусок кода...

Z>я попробовал сделать Invert if.

Z>
Z>long a = 6l;
Z>if (a == 0) {
Z>    if (false)
Z>        return;
Z>}
Z>a = 5;
Z>


Z>и получил...


Z>
Z>long a = 6l;
Z>if (a != 0) {
Z>    a = 5;
Z>} else {
Z>    if (false)
Z>        return;
Z>}
Z>


Z>в первом случае переменная a всегда будет после кода равна 5! а во втором случае уж как получится...

Z>может я просто чего то не понимаю?

Вся шутка в том что а не входит в иф — оно выполняется и при труе и при фалсе, чтобы сделать такой переворот как ты сделал первоночально всё должно было выглядеть так:

long a = 6l;
if (a == 0) {
if (false)
return;
}else{
a = 5;
}

твойже вариант инвертируемый выглядит так:

long a = 6l;

if (a != 0) {
}else{
if (false)
return;
}
a = 5;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.