簡體   English   中英

在Java中使用字符串作為條件(將字符串轉換為布爾值)

[英]Use a String as a conditional in java (Convert String to boolean)

我剛來這地方!

我正在做一個學校項目,在其中我將.csv文件作為輸入並讀取每行值並將它們存儲到String []中,然后創建一個ArrayList。

CSV文件包含一些溫度測量值,我需要為不同的溫度測量值制作過濾器。 我想知道是否有一種方法可以使if語句的條件成為字符串的值。

由於有多種方法來過濾信息(>,<,> =,<=,從int x到int y),我想創建一個方法,該方法將一個字符串連接起來,該字符串創建用戶正在尋找的條件。

  1. 提示用戶從他要過濾的陣列中選擇什么數據。

    (例如,選項3,這意味着其數據存儲在String [2]中)

  2. 然后要求用戶選擇要如何過濾:>,<,> =,<=,從int x到int y。
  3. 最后要求剩余值完成比較。

    根據這些提示,我們可以構建:

    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.

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