【问题标题】:If statement seems to skip though requirements are met [duplicate]尽管满足要求,但如果语句似乎跳过[重复]
【发布时间】:2013-08-07 06:02:28
【问题描述】:

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

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

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”。

为什么会这样?

【问题讨论】:

  • 根本不满足要求。见stackoverflow.com/questions/513832/…
  • 字符串使用 .equals() 而不是 == 运算符。
  • 比较两个字符串,应该使用equals方法: if (keyValue.equals("C")) {

标签: java string if-statement equals


【解决方案1】:

首先,检查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') {

【讨论】:

  • 该方法返回一个字符串,因此您要么需要在返回之前将 char 转换为字符串,要么也更改返回类型。
  • @Rik 已更正,感谢您指出
  • @sanbhat,支持将字符转换为字符串的想法
  • 感谢您的回答,这很好用!起初我尝试过,但我使用“C”而不是“C”。 "" 是字符串专用的吗?
  • 是的,""代表字符串,''代表字符
【解决方案2】:

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

【讨论】:

  • 我可以知道投反对票的原因吗?以便我纠正自己?
  • 谢谢,我不知道这个,现在它就像一个魅力!但是,它会在比较 a 时起作用,例如 int like: if(int i = 1) {do stuff}?
  • 这是因为 int 是原始类型,对象类型和原始类型的比较是不同的。
【解决方案3】:

试试这个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多