[英]String boolean value > Boolean, always False!
我正在讀取一個csv文件,並從每一行的字段中創建一個Person對象,其中一行代表一個人。 將要讀取的字符串放入數組中,然后將數組元素分配為屬性。
通過在這部分代碼的前后放置打印語句,我發現無論數組元素的值為true還是false,“ smoker”屬性都設置為false。
if(person_array[7] == "true") {this.smoker = true;}
else {this.smoker = false;}
我想念什么嗎?
謝謝
伊恩
不要對對象執行'==',請使用.equals()
。 if (...) boolvar = true; else boolvar = false;
也不要這樣做if (...) boolvar = true; else boolvar = false;
if (...) boolvar = true; else boolvar = false;
this.smoker = person_array[7].equals("true");
或@Adi和@Peter指出
this.smoker = Boolean.parseBoolean(person_array[7]);
保羅·湯姆布林的答案應該可以解決您的問題。 考慮用以下行替換您的代碼,
this.smoker=Boolean.parseBoolean(person_array[7]);
防止NullPointer異常
if ("true".equals(person_array[7]))
==
不比較Java中的String
對象。 ==
在對象上比較它們的引用。
你真正想要的是...
if (person_array[7].equals("true") ...
使用person_array [7] .equals(“ true”);
==“ true”有時會起作用,尤其是當它們都是文字時,例如j“ true” ==“ true”,但並非總是起作用。
如果您想了解更多信息,可以通過google搜索Java Intern。 string.intern()是“ string” == string有時起作用的原因。
您必須使用.equals(“ true”)進行檢查
當使用==比較事物時,請檢查它們是否指向(或引用)同一對象。 即,如果您聲明String a =“ Hello”; 字符串b = a; 在這種情況下,a將是==到b,因為兩個變量都指向同一個對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.