gpt4 book ai didi

java - 计算字符串 java 中某个元素出现次数的代码

转载 作者:行者123 更新时间:2023-12-01 17:41:16 24 4
gpt4 key购买 nike

我这里有这段代码,它会打印出 array[i] 处元素的数组中出现了多少个实例,这对我来说很有意义。计数永远不会超过一,我做错了什么?

import java.util.Scanner;
public class poker
{
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);
String[] array = new String[5];
for(int i = 0; i < array.length; i++)
{
array[i] = scan.nextLine();
}
for (int i = 0; i < array.length; i++) {
int count = 0;
for (int j = 0; j < array.length; j++) {
{
if (array[i] == array[j]) {
count++;
}

}
if (count >= 3) {
System.out.println(array[i] + " exists " + count + " times.");
}
}
}
}
}

最佳答案

数据类型String的比较将不起作用,除非它是相同的实例。要检查字符串是否具有相同的字符,您应该使用 .equals()。请记住,Integer(而不是int)的比较也可以这样进行。其背后的原因是 String 是一个类而不是原始类型。另请阅读this post .

所以

if (array[i].equals(array[j])) {
count++;
}

你应该没问题。

<小时/>

附加(更具可读性)解决方案

为了向您提供有关如何计算相同值的高级方法,我为您创建了一个小样本。您需要的函数是groupingBy。您可以在计算出现次数时将列表中的所有值分组到一个属性中。

示例

Map<String, Long> nameAndCount = Arrays.asList(array).stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

for(Entry<String, Long> entry : nameAndCount.entrySet()) {
System.out.println(entry.getKey() + " exists " + entry.getValue()+ " times.");
}

关于java - 计算字符串 java 中某个元素出现次数的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60868109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com