我正在開發我的第一個 libGDX 游戲,是一種帶有桌面模擬器的空閑游戲。但我的問題是關于 Java 的。
在那個游戲中,我想在第一次運行時管理 CSV 檔案中的 GameEvents 資料,然后將其作為字串保存到 Gdx.App.Preferences,效果很好。
但是沒有按預期作業的是它似乎是最簡單的方法,CSV 決議方法,沒有什么太復雜的,我只是為每個 CSV 欄位做一個回圈并將其存盤在 GameEvent 中。類(所有原始資料型別,int、string 和 float),實際上它可以作業……但是它說一些布林值是假的,而實際上它們不是。
這是我的決議方法:
private void parseEventData(String data) {
String[] text = data.split(";");
int i=0;
for(String field : text) {
switch(i){
case 0:
this.id=field;
break;
case 1:
this.eventState=field;
break;
case 2:
[...]
case 8:
this.mainEvent= (Boolean.getBoolean(field));
break;
case 9:
this.active= (Boolean.getBoolean(field));
break;
case 10:
this.continueEvent= (Boolean.getBoolean(field));
break;
[...]
}
i ;
}
}
為了除錯它,我包含了一對 println(),第一個列印“data”raw,因為它帶有 2 個 GameEvents 值:
1970MM01;PENDING;titlelonglonglong//副標題//媽媽//這是正文//如果你能把它分成幾行就更好了;MAIL//MAILB;1970MM02;NULL;MAIL;MAIL;true;true;true ;1970;1;0.5;0.5;1;1;0;true;60 1970MM02;PENDING; childtitle with a very very very very long title//subtitle//blah blah//booooh;MANAGER//MANAGERb//MANAGERc;NULL;NULL;MAIL;MAIL;false;true;false;1970;0;0.5;0.5;1 ;1;0;真;30
而另一個是在GameEvent.class中決議之后,只是決議而不傳遞給任何其他方法......
1970MM01;PENDING;titlelonglonglong//副標題//媽媽//這是正文//如果你能把它分成幾行就更好了;MAIL//MAILB;1970MM02;NULL;MAIL;MAIL;false;false;false ;1970;1.0;0.5;0.5;1.0;1.0;0.0;真;60
我已經檢查了有關 Boolean.valueOf() 和 Boolean.getBoolean 的檔案......但兩者都在某些領域給出了一些隨機的值,但在其他領域效果很好......
我究竟做錯了什么?
PS:我知道我可以使用“if”陳述句做一些解決方法,并通過 0/1 或使用 Json 更改 true/false,但我需要知道我在像 csv 決議器 TT 這樣簡單的事情中誤解了什么
提前致謝!
uj5u.com熱心網友回復:
你使用了錯誤的方法。
使用parseBoolean(field),不是getBoolean(field)。
根據檔案getBoolean()
true當且僅當引數命名的系統屬性存在并且等于(忽略大小寫)字串時才回傳"true"。系統屬性可通過類getProperty定義的方法訪問System。
所以除非有一個名為 的系統屬性"true",其值為"True",否則這將回傳 false。
但是,檔案parseBoolean()說:
將字串引數決議為
boolean.true如果 string 引數不為 null 并且與 string 相等(忽略大小寫),則回傳的布林值表示該值"true"。否則,將false回傳一個值,包括空引數。
這就是你想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365302.html
