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