簡體   English   中英

字符串布爾值>布爾值,始終為False!

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM