有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java需要根据名词的最后一个字母输出前缀

我正在做一个在线Udacity课程的作业,要求我们开发一种方法,识别名词的最后一个字母,然后根据字母,写出“La”、“el”或“?”+这个名词

完整的说明是,您需要在SpanishWord类中完成fixNon方法,以便它返回前面的名词:

// "la " if the noun ends in "a",
// "el " if it ends in "o"
// "? " if it ends in some other letter.

我似乎总是在编译时失败。有人能帮我理解我做错了什么吗

public String fixNoun(String noun) {
    String determinenet= noun.substring(noun.length() - 1);      

    if(determinenet.equals("a")) {
       System.out.println("la" + " "+noun );
    }
    else if ( determinenet.equals("o")) {
       System.out.println( "el"+ " "+noun);
    }
    else {
        System.out.println("?"+ " "+noun);
    }

    return noun;
}

共 (2) 个答案

  1. # 1 楼答案


    您不返回经过修改的名词,而是返回旧名词。在代码中,您必须更改

    System.out.println("la" + " "+noun );
    


    return("la " + noun);
    

    等等

    固定代码如下所示:

    public String fixNoun(String noun) { 
        String determinenet= noun.substring(noun.length() - 1);
    
           if(determinenet.equals("a")) {
              return("la" + " "+noun );
           }
           else if ( determinenet.equals("o")) {
              return( "el"+ " "+noun);
           }
           else {
               return("?"+ " "+noun);
           }
        } 
    }
    

    注意:String类有一个方法endsWith(),它提供字符串的最后一个字符

    因此,您也可以这样编写代码:

    public String fixNoun(String noun) {
        if(noun.endsWith("a")) {
            return("la " + noun);
        else if(noun.endsWith("o")) {
            return("el " + noun);
        else {
            return("? " + noun);
        }
    }
    

    祝你的作业顺利:)

  2. # 2 楼答案

    我不知道也许我错了。这个怎么样

    String de=noun.charAt(noun.length()-1)
    if(de.equalsIgnoreCase("a"))
        return "la" + " "+noun ;