尝试从字符串中检索第一个最长的单词,其中一个句子包含相同长度的字符串?

时间:2018-12-01 16:47:05

标签: java string loops for-loop split

public class Challenge{                                             
public static String longestWord(String sentence){                                              
    String s= sentence;                                             
    String[] word=s.split(" ");                                             
    String four=" ";                                                
    for(int i=0;i<word.length;i++){                                             
      if(word[i].length()>=four.length()){                                              
        four=word[i];                                               
      }                                             
    }                                               
  return four;                                              
} 

我在这里遇到的问题是,例如,如果我有“这有四个长很多”的句子,那么代码默认将打印“四个”而不是我需要的“这个”-我不确定如何实现允许我从给定句子返回第一个最长字符串的代码。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

当长度等于当前单词时,您只需要停止覆盖存储的“最长单词”即可。在您的>=语句中用>替换if应该可以解决问题。

答案 1 :(得分:1)

您的变量名令人困惑且多余。我假设最长的单词是第一个单词,然后从第二个单词开始循环。并且您需要>(而不是>=)。喜欢,

public static String longestWord(String sentence) {
    String[] words = sentence.split("\\s+");
    String longest = words[0];
    for (int i = 1; i < words.length; i++) {
        if (words[i].length() > longest.length()) {
            longest = words[i];
        }
    }
    return longest;
}
Java 8+中的

public static String longestWord(String sentence) {
    return Stream.of(sentence.split("\\s+")).max(
            (a, b) -> Integer.compare(a.length(), b.length())).get();
}

答案 2 :(得分:0)

您可以尝试使用Java 8:

public static String longestString(String sentence){
    return Stream.of(sentence.split("\\s+"))
            .max(Comparator.comparing(String::length))
            .orElse("");
}
相关问题