2013-09-30 2 views
3

Netbeans 7.3.1 IDE говорит, что «Назначенное значение никогда не используется» в указанной строке следующей программы:Netbeans 7.3 misreports «Неиспользованное назначение» намек

public class JavaTest { 
    static int f() { 
     return Math.random() < 0.9 ? 0 : 1; 
    } 

    static int g() { 
     return Math.random() < 0.2 ? 0 : 1; 
    } 

    public static void main(String[] args) { 
     int ret; 
     while ((ret = f()) == 0) { // Unused assignment??? 
      ret = g(); 
      if (ret != 0) 
       System.out.println(ret); 
     } 

     System.out.println(ret); 
    } 
} 

Я думаю, что это ошибка в Netbeans, но может кто-то подтвердить, видели ли они это раньше?

+0

Возможно, это связано с тем, что вы устанавливаете значение для 'ret', но никогда не используете это значение перед его установкой, поэтому нет разницы между' while ((ret = f()) == 0) 'и' while (f() == 0) '. – Mauren

+1

Вы правы, что это ошибка, но тот факт, что это обманывает Netbeans и пару человек здесь (включая меня), должен предлагать использовать более четкий код. Я бы использовал другую переменную для возврата каждой функции. – madth3

+0

Спасибо, всем. Хорошая точка madth3, хотя Netbeans ошибается, достаточно сложно обмануть нескольких людей, а также Netbeans, поэтому я уточню это, используя другую переменную. –

ответ

3

Редактировать: Отличный момент и жаль, что я не видел его раньше. Я согласен с вами сейчас, и я могу подтвердить ваш точный код в Eclipse Juno SR2, что нет предупреждения о неиспользуемом назначении. Netbeans ошибается!

Оригинал: Netbeans правильный ... вы сразу же назначаете ret новое значение после этой строки, чтобы вы могли просто сравнить f() с 0, например. while(f() == 0)

+2

Я не думаю, что это случай. Вы говорите, что я сразу назначаю ret новое значение, но это происходит только тогда, когда f() возвращает 0. Если f возвращает не-0, то я выхожу из цикла, а значение возвращается f(), которому присваивается ret , затем печатается до выхода main(). Поэтому это не неиспользуемое задание. –

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