0
private boolean  CharToString(){
    String lineOfText = "XXXXXX";
    String desiredResult = "X";
    String actualResult = "initialised value";
    for(int i = 0; i < lineOfText.length(); i ++){
        actualResult = Character.toString(lineOfText.charAt(i));
        }
    if(desiredResult == actualResult){
        return true;
    } else{
        return false;
    }
}

所以基本上,这段代码是我所拥有的代码的复制品,但旨在突出我认为经过长时间诊断和测试后的问题所在。如您所见,它将 的值设置actualResult为当前位置的字符的 'char' 值lineOfText。每个值都旨在将“X”作为字符串输出(从 char 转换而来)。

但是,由于我不知道的原因,尽管actualResultdesiredResult将“X”输出到我的调试drawText()方法(我无法弄清楚如何使用控制台日志......),但该方法返回false,表明两个字符串变量不相等

奇怪的是,如果我将 a 更改if() else为 a switch(),它会返回true(即按预期工作)。

我试过谷歌搜索和搜索 StackOverflow,但我的搜索词可能很差/错误,因为我没有得到有用的结果:(

任何帮助将不胜感激,如果这是一个愚蠢的问题,我很抱歉 - 我已经尝试了很长时间才能自己弄清楚......

ps 是否有在线任何地方都可以使用的好的图形地图编辑器?编辑 .txt 文件来创建地图似乎过于复杂,并且很难在大型/复杂地图的开发中保持一致性或连贯性......我认为肯定有一些东西,否则你会如何制作 3D java 游戏?

4

2 回答 2

1

不要使用 . 比较字符串==。始终使用equals(), 因为==仅比较它们指向相同的内存地址,在这种情况下它们不会。

private boolean  CharToString(){
String lineOfText = "XXXXXX";
String desiredResult = "X";
String actualResult = "initialised value";
for(int i = 0; i < lineOfText.length(); i ++){
    actualResult = Character.toString(lineOfText.charAt(i));
    }
if(desiredResult.equals(actualResult)){
    return true;
} else{
    return false;
}
}

应该这样做

于 2014-03-05T12:41:47.073 回答
0

要比较引用不同内存位置的 2 个字符串,您应该使用:

if(desiredResult.equals(actualResult) {
    return true;
} else {
    return false;
}

如果情况是:

String desiredResult = "test";
String actualResult = desiredResult;

在这种情况下,您可以使用if(desiredResult == actualResult),但使用equals()会是更好的做法。

于 2014-03-05T12:43:56.487 回答