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

标签 java arrays input count poker

我这里有这段代码,它会打印出 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/

相关文章:

apache-flink - 如何使用 Flink Java API 计算 DataStream 中的不同值

java - 保存到二进制/序列化 java

c - 无法将文件中的字符串与用户在 C 中输入的字符串数组进行比较

php - 在 Foreach 循环内按键、多维数组对值进行分组 - PHP

c - 从输入文件读取输入,不断陷入无限循环

java - 具有不同 Maven 模块的 Spring 资源解析器

java - 为用户显示更好的错误消息

c# - 如何获取被线程锁定的函数访问或失败的等待时间?

Java 扫描仪和字母 åäö

javascript - 如何启用禁用的输入字段?