1

我有一个非常简单的问题,我真的无法理解。

我有一个方法,它接受一个字符串并确定字符串的第一个字符是什么,然后返回它。

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”时,它不会返回,例如 keyValue = C,而是跳过 if 语句并返回“F”。

为什么会出现这种情况?

4

3 回答 3

7

首先,检查我如何比较字符串?

其次,你不必将 char 转换为 String 来检查它的值,你可以像下面那样做

res = value.charAt(0);
//keyValue = Character.toString(res); NOT REQUIRED
if (res == 'C'){
    return Character.toString(res);
} else if (res == 'G') {
于 2013-08-06T09:42:49.067 回答
4

您不应该使用==,equals()方法比较字符串

 if (someString.equals("C")){
        return someString;
    } else if (someString.equals("G")) {
        return someString;
    }
  • ==检查两个变量是否引用同一个对象。
  • equals()方法检查对象的内容是否相同。
  • 所以如果==返回true,那么equals()方法也返回true,因为它们引用的是同一个对象,因此它们是相等的

你可以找到一个很好的解释字符串比较与等号和赋值 如果你想使用字符,

res = value.charAt(0);
if (res == 'C'){
    return Character.toString(res);
} else if (res == 'G') {
    return Character.toString(res);
 }
于 2013-08-06T09:43:22.990 回答
0

尝试这个

public static char findFirstChar(String string){
    return string.charAt(0);
}
    char out = findFirstChar("Rakesh");
    System.out.println("First Character:"+out);
于 2013-08-06T10:16:09.637 回答