0

だから私はJavaプログラミングに非常に慣れていません。各従業員が 1 回だけ入力できる架空の会社宝くじを作成しようとしています。その後、勝者を発表する名前がランダムに生成されます。現時点では、正しい順序でいくつかのことを行っているかどうかさえわかりません。これに関するヘルプは大歓迎です。私はいくつかのことを調べましたが、それが悪化したと思います。

        // instance variables
        final int NUM_PARTIC = 7;  // number of workers participating
        String input;  // holds each name
        int i, j;

        // Create array to hold number of particpants.
        String[] nameArray = new String[NUM_PARTIC];
        // Create a Random class object.
        Random stakes = new Random();

        for(i = 0; i < nameArray.length; i++)
        {
            // Prompt participant for name.
            input = JOptionPane.showInputDialog(null, "Please enter your"
                    + " name into our database:", "Entry", JOptionPane.QUESTION_MESSAGE);
            nameArray[i] = input;  // Store name in namesArray[]

            // Prompt next participant for name
            input = JOptionPane.showInputDialog(null, "Please enter your name into our"
                    + " database:", "Entry", JOptionPane.QUESTION_MESSAGE);
            nameArray[i] = input;  // Store name in namesArray[]

            for(j = i + 1; j < nameArray.length; ++j)
            {
                JOptionPane.showMessageDialog(null, "Sorry, this name is already "
                        + "in our database", "Invalid", JOptionPane.ERROR_MESSAGE);
                input = JOptionPane.showInputDialog(null, "Please enter your name into our"
                        + " database:", "Entry", JOptionPane.QUESTION_MESSAGE);
            }

            // Display winner
            JOptionPane.showMessageDialog(null, "The winner for today's raffle "
                    + "is: " + nameArray[i], "Winner",
                    JOptionPane.WARNING_MESSAGE);

            // Exit program
            System.exit(0);
4

4 に答える 4

1

以下のコードで何をしていると思いますか? それは確かに以前のエントリを検索していません。自分自身に話しかけて、自分が何をしているのか、次に何をしたいのかを述べてから、これら 2 つの答えを比較してください。

for(j = i + 1; j < nameArray.length; ++j)
{
  JOptionPane.showMessageDialog(null, "Sorry, this name is already "
                + "in our database", "Invalid", JOptionPane.ERROR_MESSAGE);
  input = JOptionPane.showInputDialog(null, "Please enter your name into our"
                    + " database:", "Entry", JOptionPane.QUESTION_MESSAGE);
}

List<String>さらに、 の代わりにa を使用してString[]ください。

ランダムな勝者を取得するには、Randomクラスを itnextInt(nameArray.length)メソッドで使用するだけです。

于 2013-06-04T20:04:19.420 に答える
0

クラスを使用java.util.Randomして勝者をランダムに選択しますnameArray

Random rand=new Random()

int winnerIndex=rand.nextInt(nameArray.length);

それから

JOptionPane.showMessageDialog(null, "The winner for today's raffle "
                    + "is: " + nameArray[winnerIndex], "Winner",
                    JOptionPane.WARNING_MESSAGE);
于 2013-06-04T20:02:35.363 に答える
0

すべての Java コレクションには、containsそのコレクションで特定の項目を検索するメソッドがあります。これは、配列を検索するよりもはるかに望ましいでしょう。

この場合、Set同じ要素に対して O(1) (別名、非常に高速な検索) を許可する Java コレクションが最適です。またはList、配列などの任意の要素を取得できるようにする場合は、単に a を使用します。いずれにせよ、要素を見つける方法はあなたのために行われます。

配列内でこれを行う必要がある場合。配列を反復処理する必要があります。

public static boolean contains(String[] array, String search){
    for (String s: array){
        if (s.equals(search))
            return true;
    }
    return false;
}
于 2013-06-04T20:03:22.733 に答える