私は最近、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)
(実際には、これはより大きなプログラムの一部なので、一部を切り取って貼り付ける必要があり、何かを見逃している可能性があります)。
そこで、それを 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 の方がレベルが高いので、これが定義済みのメソッドではない可能性があることは理解しています。そのため、独自の配列カウント メソッドを作成できますが、Python のような Java には定義済みのメソッドがあるかどうか疑問に思っていました。
編集:私はこのようなものを管理しました:
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;
}
EDIT:コマンドプロンプトを使用してJavaプログラムとPython.exe(Pythonのコマンドプロンプトコンソール)を実行すると仮定すると、どちらが高速になりますか(つまり、同じコードの場合、どちらの言語がより優れたパフォーマンスを発揮しますか? )?