苦苦挣扎比较最后2/3/4个字符Java(repl.it 018 - 条件语句练习4)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了苦苦挣扎比较最后2/3/4个字符Java(repl.it 018 - 条件语句练习4)相关的知识,希望对你有一定的参考价值。

亲爱的Stackoverflow社区我在repl.it(018)条件语句4上遇到了一个任务

所以他们希望我这样做:

老师的指示:你要这样做:

给定字符串变量“word”,执行以下测试

如果单词以“y”结尾,则打印“-ies”如果单词以“ey”结尾,则打印“-eys”如果单词以“ife”结尾,则打印“-ives”如果以上都不是真的,打印“-s”应打印不超过一个。

我的代码看起来像这样:

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner inp = new Scanner(System.in);
    System.out.print("In:");
    String word = inp.nextLine();
    //DO NOT CHANGE ABOVE CODE!  Write your code below

    if(word.endsWith("y"){
      System.out.println("-ies");
    }
    else if(word.endsWith("ey")){
      System.out.println("-eys");
    }
    else if(word.endsWith("ife")){
      System.out.println("-ives");
    }
    else{

      System.out.println("-s");
    }
  }
}

当我运行它时,我的输入是:嘿

当然我的代码将通过代码查看第一个语句是否正确,是的,它是相同的,因为y = y在结尾,那是错误的!

我的问题是如何让我的代码比较最后的2或3个字符,这样当我输入Hey时它会打印出正确的值。

如果我输入嘿它应该打印出来:

- 但不是

公司

答案

由于以“ey”结尾是“y”结尾的子集,你的第二个if将永远不会成真。

首先将测试顺序更改为最具体的:

if(word.endsWith("ey"){
  System.out.println("-eys");
}
else if(word.endsWith("y")){
  System.out.println("-ies");
}
else if(word.endsWith("ife")){
  System.out.println("-ives");
}
另一答案

对这些条件重新排序:

if(word.endsWith("ey")){
   System.out.println("-eys");
}
else if(word.endsWith("ife")){
   System.out.println("-ives");
}
else if(word.endsWith("y")){
   System.out.println("-ies");
}
else{    
   System.out.println("-s");
}

这意味着我们提升最具体的条件,并将不太具体的条件放在下面。

我把else if(word.endsWith("y"))作为else ifs的最后一个,但是无论在else if链接你放在哪里,只要它在条件if(word.endsWith("ey"))之前的事情应该没问题。

以上是关于苦苦挣扎比较最后2/3/4个字符Java(repl.it 018 - 条件语句练习4)的主要内容,如果未能解决你的问题,请参考以下文章

电商人:别再跟数据透视表苦苦挣扎,这个报表神器才是你最后出路

Node.js 在大量并发连接中苦苦挣扎

复杂项目导入器(列表中的列表),在第二个列表中使用滚动行为苦苦挣扎

这么简单的游戏还卡壳?神经网络在「生命游戏」里苦苦挣扎

多次使用 Android TouchDelegate 苦苦挣扎

苦苦挣扎于单元测试和嘲弄