字符串比较if条件总是错误

时间:2015-07-06 06:37:08

标签: java if-statement comparison

这看起来像所有代码中最简单的一样,然而,它是无法编译的。我对此感到非常沮丧。请帮忙。

这就是我正在做的事情 - 我将一串单词分解为字符串数组。然后我进一步在数组的第二个索引中拆分字符串并进行比较(仅当长度为16时)。以下是条件 - 前半部分必须是所有数字且大于零。 下半场必须等于" -default" (不区分大小写)。

出于某种原因,对于下半场的比较,if条件总是不可接受的。

if (linearray[2].length() == 16) {
        String first8 = linearray[2].substring(0, 7);
        String last8 = linearray[2].substring(8, 15);
        String value = "-default";      
        try {
            int isNum = Integer.parseInt(first8);
            if (isNum > 0) {
                return "Correct";
            } else {
                return "Incorrect";
            }
        } catch (NumberFormatException e) {
            return "Incorrect";
        }
        //---------------HERE IS THE ISSUE--------------
        if (last8.equals(value)) {

        }
    }

3 个答案:

答案 0 :(得分:4)

    if (linearray[2].endsWith("default")) {

    }

由于无法访问的代码,因此无法通过编译。你的方法总是在到达它之前返回(或抛出异常),因为它之前的try-catch块总是返回一些东西,如果抛出NumberFormatException以外的异常,这个代码仍然赢了#39到达。

因此,有这种情况没有意义。

嗯,你改变了问题中的代码,但新条件

    if (last8.equals(value)) {

    }

与前一个问题相同。

答案 1 :(得分:0)

第一个问题是你定义了一个不返回任何内容的流,但是该方法应该返回一个String。

 if (last8.equals(value)) {

        }

但是,上述代码无法访问。流程在它到来之前返回。你想要实现什么目标? 将此代码移动到更易于访问的位置,例如在返回陈述之前或在

之内
if (isNum > 0) {
                return "Correct";
            } 

这种情况。

答案 2 :(得分:0)

解决。感谢你们!这是代码 -

if (linearray[2].length() == 16) {
        String first8 = linearray[2].substring(0, 7);
        String last8 = linearray[2].substring(8, 15);
        String value = "-default";      
        try {
            int isNum = Integer.parseInt(first8);
            if (isNum > 0) {
                if (last8.endsWith(value)) {
                    return "Correct";
                } else {
                    return "Incorrect";
                }
            } else {
                return "Incorrect";
            }
        } catch (NumberFormatException e) {
            return "Incorrect";
        }
    }