2013-09-21 46 views
0

這段代碼看看:Java隨機 - 兩個相等值之一如何能與另一個不同?

 while(oneRay[pick][0] == "" || oneRay[pick][0] == null) 
     hold = oneRay.length; 
     random = new Random(); 
     System.out.println(oneRay.length + "\n" + hold); 
     pick = random.nextInt(hold); 
     System.exit(0); 
    } 

在控制檯輸出,我看33,然後0。如何使任何意義嗎?首先,我設置等於1Ray的長度,然後打印1Ray的長度,然後保持,我應該看不到33和33或者最差的是0和0? 我知道你們中的一些人今晚看到了我的許多問題,但我無法越過這個循環,總會有一些錯誤或另一個錯誤,在這種情況下隨機不會繼續作爲保留值爲0 ... 請幫助我!

+1

使用'equals'比較對象的觀察平等。 '=='是供參考 – nachokk

+1

是的。當你使用對象的時候,你比較內存地址,而不是數值。可能不是你想做的事情。 – Clark

回答

5

您使用

while(oneRay[pick][0] == "" || oneRay[pick][0] == null) 

,然後您沒有使用括號,這意味着你的代碼實際工作像

while(oneRay[pick][0] == "" || oneRay[pick][0] == null) { 
    hold = oneRay.length; 
} 
random = new Random(); 
System.out.println(oneRay.length + "\n" + hold); 

特別是,如果while條件不成立,則hold = oneRay.length甚至不會被執行。

(你也應該使用.equals("").isEmpty而不是== "",你應該做的第一而不是第二的空檢查。)

相關問題