Пытаетесь извлечь первое самое длинное слово из строки, где предложение содержит строки одинаковой длины? - PullRequest
0 голосов
/ 01 декабря 2018
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 голосов
/ 01 декабря 2018

Ваши имена переменных сбивают с толку и являются избыточными.Я бы предположил, что самое длинное слово - первое, а затем начинаю цикл со второго слова.И вы хотите > (не >=).Например,

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();
}
0 голосов
/ 11 декабря 2018

Вы можете попробовать в Java 8:

public static String longestString(String sentence){
    return Stream.of(sentence.split("\\s+"))
            .max(Comparator.comparing(String::length))
            .orElse("");
}
0 голосов
/ 01 декабря 2018

Вам просто нужно прекратить перезаписывать сохраненное «самое длинное слово», когда длина равна текущему слову.Замена >= на > в вашем выражении if должна помочь.

...