2013-09-30 42 views
3

的Netbeans IDE 7.3.1說:「所分配的值是從未使用過」,在下面的程序的指示線:的Netbeans 7.3誤報一個「未使用分配」提示

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錯誤!您可以立即在該行之後爲ret指定一個新值,因此您不妨將f()與0等值比較。 while(f() == 0)

+2

我不認爲這是事實。你說我立即分配ret一個新的值,但只有當f()返回0時纔會發生。如果f返回非0,那麼我將退出循環,並將f()返回的值分配給ret ,然後在main()退出前打印。因此它不是一個未使用的任務。 –