[英]How to use this boolean in an if statement?
private String getWhoozitYs(){
StringBuffer sb = new StringBuffer();
boolean stop = generator.nextBoolean();
if(stop = true)
{
sb.append("y");
getWhoozitYs();
}
return sb.toString();
}
這是我在編程課程中做的一個項目的一段代碼。 我遇到的問題是,在聲明布爾停止並嘗試為其分配隨機生成的布爾值后,我無法在 if 語句中使用它來確定是否應該將更多 y 附加到 StringBuffer 中。 我的構造函數中有 Random 生成器,所以這部分不是問題。 我假設因為我在 if 語句之外聲明了布爾值,所以我可以在內部使用它,但情況似乎並非如此。 真正的問題是如何在 if 語句中使用隨機確定的布爾值。
if(stop = true)
應該是if(stop == true)
,或者只是(更好!) if(stop)
。
這實際上是一個很好的機會來看看為什么總是使用if(something)
如果你想看看它是否是true
而不是寫if(something == true)
(糟糕的風格!)。
通過執行stop = true
那么您將true
分配給stop
而不是比較。
那么為什么執行if
語句下面的代碼呢?
在運行時,賦值表達式的結果是賦值發生后變量的值。 賦值表達式的結果本身不是變量。
所以因為你寫了stop = true
,那么你就滿足了if
條件。
實際上,如果您只需要使用 StringBuffer 的一個實例,而不是在每個遞歸調用中創建一個實例,那么整個方法會更清晰……我會選擇:
private String getWhoozitYs(){
StringBuffer sb = new StringBuffer();
while (generator.nextBoolean()) {
sb.append("y");
}
return sb.toString();
}
if(stop == true)
要么
if(stop)
= 用於賦值。
== 用於檢查條件。
if(stop = true)
它將分配 true 以停止並評估 if(true)。 所以它總是會執行里面的代碼,因為 stop 總是被賦值為 true。
由於stop
是布爾值,您可以將該部分更改為:
//...
if(stop) // Or to: if (stop == true)
{
sb.append("y");
getWhoozitYs();
}
return sb.toString();
//...
試試這個:-
private String getWhoozitYs(){
StringBuffer sb = new StringBuffer();
boolean stop = generator.nextBoolean();
if(stop)
{
sb.append("y");
getWhoozitYs();
}
return sb.toString();
}
= 用於賦值
寫
if(stop){
//your code
}
要么
if(stop == true){
//your code
}
另外你可以寫
if(stop)
{
sb.append("y");
getWhoozitYs();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.