如何找到数组字中的最后一个字母,以查看下一个字是否也以该字母开头?

时间:2018-06-02 19:03:53

标签: java

我刚开始使用Java,所以我对这种编程语言很陌生。我几个小时以来一直在寻找类似的问题,但没有什么特别的东西可以帮助我。

如何检查第一个单词的最后一个字母是否与下一个单词的第一个字母相同?例如,用户输入:Chocolate Elephant Toronto。巧克力的最后一个字母是'e',这是大象的第一个字母,然后大象的最后一个字母是't',这是多伦多的第一个字母。

我想这样做,如果所有的单词都正确地相互跟随,它会打印出类似“他们都匹配”的内容,如果没有,那么“第二个单词不会先跟随”。

如果用户决定每次输入不同数量的单词,我只是在寻找有关如何执行此操作的提示。我猜我需要一个字符串数组,但是我仍然可以使用charAt解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

public String checkWords(String phrase){
    if(phrase == null){
        return "Phrase must not be null";
    }
    String[] words = phrase.toLowerCase().split(" ");
    if(words.length < 2){
        return "At least 2 words!";
    }
    for (int i = 0; i < (words.length - 1); i++) {
        String firstWord = words[i].trim();
        char firstWordlastLetter = firstWord.charAt(firstWord.length()-1);
        String secondWord = words[i+1].trim();
        char secondWordFirstLetter = secondWord.charAt(0);
        if(firstWordlastLetter!=secondWordFirstLetter){
            return String.format("Word %d does not follow word %d", i+1, i);
        }
    }

    return "They all match";
}

答案 1 :(得分:0)

您可以使用以下方法:

private static boolean wordCheck(String[] words) {
    if(words.length < 2) {
        return true; //check what to return if only 1 word is passed
    }
    for(int i = 1; i < words.length; i++) {
        String currentWord = words[i].toLowerCase();
        String previousWord = words[i - 1].toLowerCase();

        if(!currentWord.startsWith(previousWord.substring(
                previousWord.length() - 1))) {
            return false;
        }
    }

    return true;
}

它只是检查每个单词的开头是否与其前一个单词的结尾相对应。

wordCheck("Chocolate Elephant Toronto".split(" ")) //returns true
wordCheck("Chocolate Elephant oronto".split(" ")) //returns false

请记住验证您发送给该方法的字词。以上并不能确保索引有效,空值和0长度字符串可能导致异常。