Java 字符未正确识别
Java character not recognized correctly
我不明白为什么会出现下面的代码:
public Image getLetter(String letterToGet)
{
System.out.println("é" == "e");
System.out.println("Received: " + letterToGet);
if("\u00e9" == letterToGet.toLowerCase()); {
letterToGet = "SPECIALACCTAIGUESPECIAL";
}
if("\u00e8" == letterToGet.toLowerCase()) {
letterToGet = "SPECIALACCTGRAVESPECIAL";
}
System.out.println("searching for " + letterToGet + " in the hashmap");
return languageMap.get(letterToGet.toLowerCase());
}
可以return下面的输出
Traduction following ArrayList: [e, é, è]
Received: e
searching for SPECIALACCTAIGUESPECIAL in the hashmap
Received: é
searching for SPECIALACCTAIGUESPECIAL in the hashmap
Received: è
searching for SPECIALACCTAIGUESPECIAL in the hashmap
按照这个逻辑,为什么这行 return 是错误的?
System.out.println("\u00e9" == "e");
记住 e!=é 和 u00e9=é,这将 return 为真 :
System.out.println("\u00e9" == ("é"));//Notice é instead of e
请注意,即使这在那种情况下可行,因为我们比较字符文字(如@Pshemo 在评论中解释的那样),请确保将较长的字符串与 .equals
.
进行比较
意外输出的原因是第一个 if
之后的额外分号。
目前,您有
if("\u00e9" == letterToGet.toLowerCase()); {
letterToGet = "SPECIALACCTAIGUESPECIAL";
}
其中对letterToGet
的赋值超出了if
的范围,因此无论letterToGet
的值如何,它都会运行。
我不明白为什么会出现下面的代码:
public Image getLetter(String letterToGet)
{
System.out.println("é" == "e");
System.out.println("Received: " + letterToGet);
if("\u00e9" == letterToGet.toLowerCase()); {
letterToGet = "SPECIALACCTAIGUESPECIAL";
}
if("\u00e8" == letterToGet.toLowerCase()) {
letterToGet = "SPECIALACCTGRAVESPECIAL";
}
System.out.println("searching for " + letterToGet + " in the hashmap");
return languageMap.get(letterToGet.toLowerCase());
}
可以return下面的输出
Traduction following ArrayList: [e, é, è]
Received: e
searching for SPECIALACCTAIGUESPECIAL in the hashmap
Received: é
searching for SPECIALACCTAIGUESPECIAL in the hashmap
Received: è
searching for SPECIALACCTAIGUESPECIAL in the hashmap
按照这个逻辑,为什么这行 return 是错误的?
System.out.println("\u00e9" == "e");
记住 e!=é 和 u00e9=é,这将 return 为真 :
System.out.println("\u00e9" == ("é"));//Notice é instead of e
请注意,即使这在那种情况下可行,因为我们比较字符文字(如@Pshemo 在评论中解释的那样),请确保将较长的字符串与 .equals
.
意外输出的原因是第一个 if
之后的额外分号。
目前,您有
if("\u00e9" == letterToGet.toLowerCase()); {
letterToGet = "SPECIALACCTAIGUESPECIAL";
}
其中对letterToGet
的赋值超出了if
的范围,因此无论letterToGet
的值如何,它都会运行。