我正在尝试打印字符串中最长的单词,仅打印单词本身。如果单词相等,则打印第一个单词。我在哪里弄糟?

时间:2020-10-16 20:25:51

标签: java string

我的输出只是打印整个字符串,而不是实际的单词。 我似乎找不到我的错误。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class Main {

public static void main(String[] args) throws IOException {
InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
BufferedReader in = new BufferedReader(reader);
String line = "";
String longString = "";
int max=0;
while ((line = in.readLine()) != null) {
if(line.length()>max){
   max=line.length();
   longString=line;
  }
}
  System.out.println(longString);
  }
}

1 个答案:

答案 0 :(得分:0)

您正在阅读线并比较它们的长度。您不会在一行中考虑单词。

一种简单的方法是采用一条线并将其分成一个或多个空格,如line.split("\\s+")中所述。那是你的话。

while ((line = in.readLine()) != null) {
  for (String word : line.split("\\s+")) {
    if (word.length() > max) {
      max = word.length();
      longString = word;
    }
  }
}