为什么没有触发 If 语句?

Why doesn't the If statement get triggered?

提问人:Irvin Wang 提问时间:10/30/2023 更新时间:10/30/2023 访问量:58

问:

我写了一些代码来检测连续字母序列中的跳过。我已将其缩小到未激活的 if 语句。

当它跳过一个字母时,我的字母表列表和序列之间应该不一致。但是,它没有出现,只是直接推到最后的返回语句。我加粗了不起作用的 if 语句

public class Sequence {
  public static char findMissingLetter(char[] array) {
    String ualphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String lalphabet = "abcdefghijklmnopqrstuvwxyz";
    if (String.valueOf(array[1]).compareTo("_") < 0) {
      int Start = ualphabet.indexOf(String.valueOf(array[0]));
      int End = ualphabet.indexOf(String.valueOf(array[array.length-1]));
      for (int i = 0; i < (End-Start); i++){
        if (!(String.valueOf(array[i]).compareTo(String.valueOf(ualphabet.charAt(Start+i)))==0)){
          return((ualphabet.charAt(Start+i)));
        }
      }
    }
    else {
      int Start = lalphabet.indexOf(String.valueOf(array[0]));
      int End = lalphabet.indexOf(String.valueOf(array[array.length-1]));
      for (int i = 0; i < array.length-1; i++){
        if (!(String.valueOf(array[i]).compareTo(String.valueOf(lalphabet.charAt(Start+i)))==0)){
          return((lalphabet.charAt(Start+i)));
        }
      }
    }
    return('a');
  }
}
java if 语句

评论

1赞 Andrew Henle 10/30/2023
if像 ?考虑到您不必要地塞进一行的所有操作,您无法理解它在做什么也就不足为奇了。这种编写代码的风格导致你编写无法理解的代码。别再这样了。使用可在调试器中检查的临时变量将其分散在多行上。永远不要忘记在一行中塞满太多代码的编写代码会把你引向何方if (!(String.valueOf(array[i]).compareTo(String.valueOf(ualphabet.charAt(Start+i)))==0))
1赞 Old Dog Programmer 10/30/2023
顺便说一句,斜体和粗体在代码块中不起作用。
1赞 Old Dog Programmer 10/30/2023
题外话:你知道 Java 中是一个整数基元类型吗?你可以用 来做算术,就像你可以用 、 、 和 做算术一样。例如,您可以有 ,其中也是 .charcharbyteshortintlongchar current = Character.toLowerCase(array[i]); int difference = current - previous; if (difference > 1) { ...previouschar
0赞 aled 10/30/2023
代码段中有 3 个如果。你指的是哪一个?
2赞 VGR 10/31/2023
if (!(String.valueOf(array[i]).compareTo(String.valueOf(ualphabet.charAt(Start+i)))==0))是一种非常冗长且难以维护的写作方式。您不必仅仅为了比较它们而将值转换为字符串,尤其是当它们是数值时。if (array[i] != ualphabet.charAt(Start+i))

答: 暂无答案