我有一个非常简单的问题,我真的无法理解。
我有一个方法,它接受一个字符串并确定字符串的第一个字符是什么,然后返回它。
public String deterFirstChar(String value){
String keyValue;
char res;
res = value.charAt(0);
keyValue = Character.toString(res);
if (keyValue == "C"){
return keyValue;
} else if (keyValue == "G") {
return keyValue;
}
System.out.println("Error: Wrong keyParam");
return "F";
}
但是,如果没有返回,例如keyValue = C,它会跳过if语句并在我确定keyValue为“C”时返回“F”。
为什么会这样?
答案 0 :(得分:7)
其次,您不必将char转换为String来检查其值,您可以像下面这样做
res = value.charAt(0);
//keyValue = Character.toString(res); NOT REQUIRED
if (res == 'C'){
return Character.toString(res);
} else if (res == 'G') {
答案 1 :(得分:4)
您不应使用==
比较字符串,使用equals()
方法
if (someString.equals("C")){
return someString;
} else if (someString.equals("G")) {
return someString;
}
==
检查两个变量是否引用同一个对象。equals()
方法检查对象的内容是否相同。==
返回true,那么equals()
方法也会返回true,因为它们指的是同一个对象因此它们是相等的您可以找到string comparison with equals and assignment的绝佳解释 如果你想使用字符,
res = value.charAt(0);
if (res == 'C'){
return Character.toString(res);
} else if (res == 'G') {
return Character.toString(res);
}
答案 2 :(得分:0)
试试这个
public static char findFirstChar(String string){
return string.charAt(0);
}
char out = findFirstChar("Rakesh");
System.out.println("First Character:"+out);