替代(x.equals)for(!=)

时间:2014-12-08 23:50:27

标签: string false-positive

好的,所以对于我的编码项目,我需要完成臭名昭着的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

很抱歉连续出错,我只编了几个月。

1 个答案:

答案 0 :(得分:1)

取消equals()来电的结果:

!x.equals(y)