if 条件下的字符串比较总是出错
String Comparision in if condition always errors
这看起来是所有代码中最简单的,但它是不可编译的。我对此感到非常沮丧。请帮忙。
这就是我正在做的事情 - 我将一串单词分解为字符串数组。然后我进一步拆分数组的第二个索引中的字符串并进行比较(仅当长度为 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)) {
}
}
if (linearray[2].endsWith("default")) {
}
没有通过编译,因为它是无法访问的代码。你的方法在到达它之前总是 return (或抛出异常),因为它前面的 try-catch
块总是 return 一些东西,如果异常不是 NumberFormatException
被抛出,这段代码还是达不到。
所以有这个条件是没有意义的。
嗯,你改变了问题中的代码,但是新的条件
if (last8.equals(value)) {
}
与上一个问题相同。
第一个问题是您定义了一个没有 return 任何东西的流,但是该方法应该 return 一个字符串。
if (last8.equals(value)) {
}
但是,上面的代码无法访问。流程 returns 到达这里之前。你想达到什么目的?
将此代码移动到更容易到达的位置,例如在 return 语句之前或内部
if (isNum > 0) {
return "Correct";
}
这个条件。
已解决。谢谢你们!这是代码 -
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";
}
}
这看起来是所有代码中最简单的,但它是不可编译的。我对此感到非常沮丧。请帮忙。
这就是我正在做的事情 - 我将一串单词分解为字符串数组。然后我进一步拆分数组的第二个索引中的字符串并进行比较(仅当长度为 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)) {
}
}
if (linearray[2].endsWith("default")) {
}
没有通过编译,因为它是无法访问的代码。你的方法在到达它之前总是 return (或抛出异常),因为它前面的 try-catch
块总是 return 一些东西,如果异常不是 NumberFormatException
被抛出,这段代码还是达不到。
所以有这个条件是没有意义的。
嗯,你改变了问题中的代码,但是新的条件
if (last8.equals(value)) {
}
与上一个问题相同。
第一个问题是您定义了一个没有 return 任何东西的流,但是该方法应该 return 一个字符串。
if (last8.equals(value)) {
}
但是,上面的代码无法访问。流程 returns 到达这里之前。你想达到什么目的? 将此代码移动到更容易到达的位置,例如在 return 语句之前或内部
if (isNum > 0) {
return "Correct";
}
这个条件。
已解决。谢谢你们!这是代码 -
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";
}
}