我最近用 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'paste 位,我可能错过了一些东西)。
所以我决定把它翻译成Java。请注意这里的算法:获取随机数,将其打印,将其附加到数组中,然后在最后计算数组中每个数字的数量,并打印出该值。问题是,我不知道如何someArray.count(someIndex)
在 Java 语法中做等效的操作。所以到目前为止,我的 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 的命令提示符控制台),哪个会更快(换句话说,对于相同的代码,哪种语言的性能更好? )?