【发布时间】:2021-12-31 05:32:00
【问题描述】:
我正在开发我的第一个 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;真;真;1970;1;0.5;0.5;1;1;0;真;60 1970MM02;待定; childtitlewith 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
而这个other是在GameEvent.class中解析之后,只是解析,没有传递给任何其他方法……
1970MM01;PENDING;titlelonglonglong//副标题//妈妈//这是正文//如果你能把它分开在//各行中更好;MAIL//MAILB;1970MM02;NULL;MAIL;MAIL;false;假;假;1970;1.0;0.5;0.5;1.0;1.0;0.0;真;60
我查看了有关 Boolean.valueOf() 和 Boolean.getBoolean 的文档...但两者都在某些字段中给出了一些看起来随机的值,但在其他字段中效果很好...
我做错了什么?
PS:我知道我可以使用“if”语句来解决一些问题,并将真/假更改为 0/1,或者使用 Json,但我需要知道我在 csv 解析器这样简单的事情中误解了什么TT
【问题讨论】:
标签: java csv libgdx boolean text-parsing