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

问题描述 投票:1回答:2

亲爱的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时它会打印出正确的值。

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

- 但不是

公司

java if-statement compare conditional equals
2个回答
1
投票

由于以“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");
}

1
投票

对这些条件重新排序:

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"))之前的事情应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.