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
的值设置为lineOfText
位置当前位置的字符的'char'值。
每个值都旨在将“X”输出为String(从char转换)。
但是,由于我不知道的原因,尽管actualResult
和desiredResult
都将“X”输出到我的调试drawText()
方法(我无法弄清楚如何使用控制台日志。 ..),该方法返回false
,表示两个String变量不等于。
奇怪的是,如果我要将if() else
更改为switch()
,它将返回true
(即按预期工作)。
我尝试过谷歌搜索和搜索StackOverflow,但我的搜索条件可能很差/错,因为我没有得到有用的结果:(
如果这是一个愚蠢的问题,我将非常感谢任何帮助 - 我已经尝试了很长时间才能弄清楚...
P.S。在任何地方都有一个好的图形地图编辑器吗?编辑.txt文件来创建地图似乎过于复杂,并且很难在大型/复杂地图的开发中保持一致性或连贯性......我认为必须有一些东西,你还要怎么做一个3D java游戏?
答案 0 :(得分: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;
}
}
应该这样做
答案 1 :(得分:0)
要比较2个引用不同内存位置的字符串,您应该使用:
if(desiredResult.equals(actualResult) {
return true;
} else {
return false;
}
如果案件是:
String desiredResult = "test";
String actualResult = desiredResult;
在这种情况下,您可以使用if(desiredResult == actualResult)
,但使用equals()
会更好。