提问人:Irvin Wang 提问时间:10/30/2023 更新时间:10/30/2023 访问量:58
为什么没有触发 If 语句?
Why doesn't the If statement get triggered?
问:
我写了一些代码来检测连续字母序列中的跳过。我已将其缩小到未激活的 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');
}
}
答: 暂无答案
评论
if
像 ?考虑到您不必要地塞进一行的所有操作,您无法理解它在做什么也就不足为奇了。这种编写代码的风格导致你编写无法理解的代码。别再这样了。使用可在调试器中检查的临时变量将其分散在多行上。永远不要忘记在一行中塞满太多代码的编写代码会把你引向何方。if (!(String.valueOf(array[i]).compareTo(String.valueOf(ualphabet.charAt(Start+i)))==0))
char
char
byte
short
int
long
char current = Character.toLowerCase(array[i]); int difference = current - previous; if (difference > 1) { ...
previous
char
if (!(String.valueOf(array[i]).compareTo(String.valueOf(ualphabet.charAt(Start+i)))==0))
是一种非常冗长且难以维护的写作方式。您不必仅仅为了比较它们而将值转换为字符串,尤其是当它们是数值时。if (array[i] != ualphabet.charAt(Start+i))