【问题标题】:Not Entering an if Condition even if statements are valid即使语句有效,也不输入 if 条件
【发布时间】:2012-06-09 14:50:39
【问题描述】:

我的代码中的错误是即使数组中存在“A”、“B”、“C”,但内部循环内的 if 条件无法识别它们。请注意,ABC 来自已使用 String.split(""); 拆分的字符串; java的方法

public class Hexadecimal
{
    public static void main(String[] args)
    {
            String hex = "ABC";
            hToD(hex);
    }

    public static void hToD(String hexa)
    {
        String[] hexadecimal = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
        String[] value = hexa.split("");

        int deci = 0;
        int bit =0;

        for(int i = 0; i<value.length;i++)
        {
            for(int j = 0; j<hexadecimal.length;j++)
            {
                if(value[i] == hexadecimal[j])
                {
                    deci = deci + compute(j,bit++);
                    System.out.println(deci);
                }
            }
        }
    }

    public static int compute(int digit,int bit)
    {
        int ans = 0;
        if(bit == 0)
        {
            ans = digit * (1);
        }else
        {
            ans = digit * (16 * bit);
        }
        return ans;
    }
}

【问题讨论】:

  • 你知道你正在检查相同的对象,而不是相同的字符串内容,不是吗?
  • 哦,我的错。我实际上是在比较值。但我猜 == 是为了比较它们是否具有相同的参考

标签: java arrays if-statement conditional-statements


【解决方案1】:

永远不要将字符串与== 进行比较。始终使用s1.equals(s2)

前者测试两个对象是否相同(即变量引用相同的 String 对象)。后者测试两个Strings的字符序列是否相同。

【讨论】:

  • 哦,是的,我忘了。字符串是一个对象。感谢您的提醒。
【解决方案2】:

尝试在内部 if 语句中使用 .equals() 而不是 ==。

if(value[i].equals(hexadecimal[j]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多