好的,所以对于我的编码项目,我需要完成臭名昭着的Vowels-R-Us计划。我遇到了逻辑错误。
此问题代码在标题为“BROKEN CODE”的评论中指定
在这个项目中,元音被定义为A S C或L,所有其他字母都被认为是辅音。
给出的考试日期或单词是“PDAE”
我在这个方法中尝试做的是检测我的字符串,单词的结尾是否以辅音或元音或两个辅音/元音结尾。根据它是以一个还是两个结尾,它将wordEnd设置为其各自的值:
private static void checkEnd() {
检查最后一个字母是否为元音,如果为true,则将wordEnd设置为1:
if ("A".equals(word.substring(word.length())) || "C".equals(word.substring(word.length())) || "S".equals(word.substring(word.length())) || "L".equals(word.substring(word.length()))) {
wordEnd = 2;
这将检查倒数第二个单词是否也是元音,然后将wordEnd设置为3:
if ("A".equals(word.substring(word.length() - 1)) || "C".equals(word.substring(word.length() - 1)) || "S".equals(word.substring(word.length() - 1)) || "L".equals(word.substring(word.length() - 1))) {
wordEnd = 3;
}
}
这将wordEnd设置为2,假设第一个if语句输出为false:
else {
wordEnd = 3;
这是我想到的破解代码:
if ("A" != (word.substring(word.length() - 1)) && "C" != (word.substring(word.length() - 1)) && "S" != (word.substring(word.length() - 1)) && "L" != (word.substring(word.length() - 1)))
wordEnd = 1;
代码理论上应该输出false并将wordEnd的值保留为1,但它会变为true并将其设置为3 ..
我需要替代使用!=来比较字符串,我能为此做些什么?
这只打印变量wordEnd,但由于某种原因总是出现在3:
/*
* TEST CODE
*/
System.out.println(wordEnd);
}
}
MAJOR LOGIC EDIT
最后两个陈述。否则,如果:
由于逻辑错误,我不得不交换1和3。如果最后一个if输出为false,那么它应该输出1,因为最后两个不是两个辅音。所以我的不好,但感谢@clcto在不使用时帮助我解决了其他错误!x.equals
很抱歉连续出错,我只编了几个月。
答案 0 :(得分:1)
取消equals()
来电的结果:
!x.equals(y)