[英]Use a String as a conditional in java (Convert String to boolean)
我剛來這地方!
我正在做一個學校項目,在其中我將.csv文件作為輸入並讀取每行值並將它們存儲到String []中,然后創建一個ArrayList。
CSV文件包含一些溫度測量值,我需要為不同的溫度測量值制作過濾器。 我想知道是否有一種方法可以使if語句的條件成為字符串的值。
由於有多種方法來過濾信息(>,<,> =,<=,從int x到int y),我想創建一個方法,該方法將一個字符串連接起來,該字符串創建用戶正在尋找的條件。
- 提示用戶從他要過濾的陣列中選擇什么數據。
(例如,選項3,這意味着其數據存儲在String [2]中)
- 然后要求用戶選擇要如何過濾:>,<,> =,<=,從int x到int y。
最后要求剩余值完成比較。
根據這些提示,我們可以構建:
String a = String[2] + (comparison operator) + comparison value.
例如
a = String[2] + " > 20"
然后,我想這樣使用“ a”: if(a){}
控制台在以下位置應將其讀取為: if(Double.valueOf(String[2]) > 20){}
我的IDE是BlueJ,它告訴我不兼容的類型:java.lang.String無法轉換為布爾值。 您可能想知道,如果我要比較雙精度值,為什么要使用String [],
在此先感謝您,如果我的想法荒謬或不清楚,我深表歉意。
您不是在“比較雙精度值”,事實上,您根本沒有進行任何比較。 字符串是字符串,不是true / false值,因此類型不兼容錯誤。 (為澄清起見,Java看到一個字符串: if("Double.valueOf(String[2]) > 20"){}
不是if(Double.valueOf(String[2]) > 20){}
)
我可能只會在比較運算符上使用一個開關(確保它是字符串而不是char):
switch(operator) {
case ">":
doStuffGreaterThan();
break; // Needed or else it will continue into the next cases too
case "<":
doStuffLessThan();
break;
case ">=":
doStuffGE();
break;
... etc ...
}
編輯:我做了一些搜索,發現了這個 ,我之前沒有見過,但可能有用。
如果要評估字符串中的條件,則可以使用以下方法:
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
Boolean eval = (Boolean) engine.eval("40 > 10");
assert(eval);
} catch (ScriptException e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.