在字符串数组中查找最长的字符串

新手上路,请多包涵

问题是我尝试这样做,但是我检查字符串长度的方法不起作用;我该怎么做才能解决它?

 public static void main(String[] args) {
    String[] animalNames = {"cat", "rabbit", "horse", "goat", "rooster", "ooooooooooooooo"};
    String a= getLongestString(animalNames);
    System.out.println(a);
}

public static String getLongestString(String []animalNames) {
  //  String animalNames[] =  {"cat","chicken","horse","ooooooooo" };

    int j = 0;
    for (j = 0; j <= animalNames.length; j++) {
        if (animalNames[j].length() > animalNames[j + 1].length()) {
                return (animalNames[j]);
            }
        }
        return null;
    }

}

原文由 Dee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

这里。 1. 您使用 j<= animalNames.length;

  1. 你比较 animalNames[j + 1] ? -> 错误索引超出数组

  2. 并且您返回第一个 if 条件 return (animalNames[j]); -> 错误值

好吧,让我说清楚。您找到数组中最长的字符串。您遍历数组然后比较 2 个附近的元素,然后返回较大的一个。使用您的代码,它将返回兔子。正确的?

可能您对流程感到困惑。有一个简单的方法。

  1. 您为第一个数组元素的长度分配一个变量:elementLength = array[0].length;和一个跟踪索引的值
  2. 你遍历数组你用这个变量检查每个元素,如果更大则重新分配元素值并更新索引。
  3. 循环结束。你有最大的长度和索引

代码:

 int index = 0;
int elementLength = array[0].length();
for(int i=1; i< array.length(); i++) {
    if(array[i].length() > elementLength) {
        index = i; elementLength = array[i].length();
    }
}
return array[index];

这就对了。

原文由 kidnan1991 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 java 8 非常简单(只需先检查您的数组是否为空或专门处理 .get() ):

 List<String> strings = Arrays.asList(animals);
String longest = strings.stream().
    max(Comparator.comparingInt(String::length)).get();
int max = longest.length();

或者,如果您只需要长度:

 int max = strings.stream().map(String::length).max(Integer::compareTo).get();

或者,如果您更喜欢单线,它是:

 String longest = Arrays.asList(animals)
     .strings.stream().max(Comparator.comparingInt(String::length)).get();
=AND=
int max = Arrays.asList(animals)
           .stream().map(String::length).max(Integer::compareTo).get();

好吧,好吧..它实际上是两班的:-)享受吧!

更新:

而不是 Arrays.asList(animals).strings.stream() 可以直接使用 Stream.of(animals)

原文由 Nestor Milyaev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题