gpt4 book ai didi

java - 计算元素在数组中出现的次数 - Java

转载 作者:行者123 更新时间:2023-11-29 09:35:46 25 4
gpt4 key购买 nike

我最近用 Python 编写了一个非常简单的练习程序,它接受用户输入并掷骰子。代码是:

import random
import sys
import math

def roll(rolls, sides, results):
for rolls in range(1, rolls + 1):
result = random.randrange(1, sides + 1)
print result
results.append(result)
def countf(rolls, sides, results):
i = 1
print "There were", rolls, "rolls."
for sides in range(1, sides + 1):
if results.count(i) != 1:
print "There were", results.count(i), i,"s."
else:
print "There was", results.count(i), i
i = i + 1
if i == sides:
break
rolls = input("How many rolls? ")
sides = input("How many sides of the die? ")
results = []

roll(rolls, sides, results)
countf(rolls, sides, results)

(实际上这是一个更大程序的一部分,所以我不得不剪切'n'粘贴,我可能漏掉了一些东西)。

所以我决定将其翻译成 Java。注意这里的算法:获取随机数,打印它,将它追加到一个数组,然后计算数组末尾每个数字的数量,并打印出该值。问题是,我不知道如何用 Java 语法执行与 someArray.count(someIndex) 等效的操作。所以到目前为止,我的 Java 程序看起来像这样:

import java.util.*;

public class Dice {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
final static int TIMES_TO_ROLL = getInt("Times to roll?");
Random flip = new Random();
int[] results = new int[TIMES_TO_ROLL];
for (int i = 0; i < TIMES_TO_ROLL; i++) {
int result = flip.nextInt(6);
System.out.println(result);
results[i] = result;
}
}
public static int getInt(String prompt) {
System.out.print(prompt + " ");
int integer = input.nextInt();
input.nextLine();
return integer;
}
}

有人可以帮我写数组计数代码吗?我知道这可能不是一个定义的方法,因为 Python 毕竟是更高级别的,所以我可以制作我自己的数组计数方法,但我想知道 Java 是否像 Python 一样有一个预定义的方法.

编辑:我管理了这样的事情:

public static int arrayCount(int[] array, int item) {
int amt = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == item) {
amt++;
}
else {
amt = amt;
}
}
return amt;
}

编辑:出于兴趣,假设我使用命令提示符来运行我的 Java 程序和 Python.exe(Python 的命令提示符控制台),哪个会更快(换句话说,对于相同的代码,哪种语言具有更好的性能?)?

最佳答案

您可以使用 HashMap 来存储结果。

如果新数字不在您的 map 中,您可以使用“1”作为初始值添加它。如果它存在,则将“+1”添加到当前 map 值。

要显示值,您只需在 for each 循环中迭代您的条目即可。

关于java - 计算元素在数组中出现的次数 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053607/

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