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