有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java If语句似乎在满足需求的情况下跳过

我有一个非常简单的问题,我真的不明白

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

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语句并返回“F”,而不是返回keyValue=C

为什么会发生这种情况


共 (3) 个答案

  1. # 1 楼答案

    试试这个

    public static char findFirstChar(String string){
        return string.charAt(0);
    }
        char out = findFirstChar("Rakesh");
        System.out.println("First Character:"+out);
    
  2. # 2 楼答案

    首先,检查How do i compare string?

    其次,您不必将char转换为String来检查其值,您可以像下面这样做

    res = value.charAt(0);
    //keyValue = Character.toString(res); NOT REQUIRED
    if (res == 'C'){
        return Character.toString(res);
    } else if (res == 'G') {
    
  3. # 3 楼答案

    不应使用==比较字符串,而应使用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);
     }