5
import java.util.Random;
import java.util.Scanner;

public class Lottery
{
    private int[] lotteryNumbers = new int[5];
    private int counter;
    private int[] userNumbers = new int[5];
    private Scanner keyboard = new Scanner(System.in);  
    public Lottery()
    {
        for(counter = 0; counter < 5; counter++)
        {
            lotteryNumbers[counter] = nextInt(int 10);
        }
    }

後にさらにコードがありますが、エラーはないので、含めません。とにかく、「lotteryNumbers [counter] = nextInt(int10);」という行 「.classexpected」エラーが発生します。

4

4 に答える 4

12

Java はすでにメソッド パラメータの型を認識しています。メソッドを呼び出すときに指定する必要はありません。

nextInt(int 10);

次のようにする必要があります。

nextInt(10);

もちろん、これは実際にメソッドがnextInt定義されていることを前提としています。(コードサンプルには表示されません)

于 2012-04-09T22:53:05.183 に答える
2

Java はオブジェクト指向言語です。どのオブジェクトを呼び出しnextInt(10)ていますか? 見当たりません。コンパイラはこれを暗黙的に想定します。どこかでインスタンスをLottery使用していますか? Random見えません。

次のようなものが必要だと思います:

private Random random = new Random(System.currentTimeMillis());

次に、ループはこれを行う必要があります:

lotteryNumbers[counter] = this.random.nextInt(10);

あなたがしていることには他にも問題があります:

  • どこにでもある不要な「マジック」ナンバー。このクラスを、あなたが持っているものよりもはるかに柔軟にすることができます。
  • このようなクラスへの入力の混合は、悪い考えです。値を渡すことができる抽象化を作成し、それらを単独で取得する場所に残します。「単一責任」と考えてください。
  • Lotteryユーザー番号にプライベート データ メンバーが必要な理由がわかりません。ただし、ユーザー番号を受け取り、勝ったかどうかを判断するメソッドがどこにあるかはわかります。私の意見では、あなたは貧弱な抽象化を作成しました。

これでしばらく動けるかもしれません。

于 2012-04-09T22:56:05.097 に答える
1

何のintために?

キャストしようとしている場合は、(int).

このエラーが発生する理由は、式が期待される場所に Java が型名を検出すると、その型のクラス オブジェクトを参照しようとしていると見なされるためですint.class

于 2012-04-09T22:53:56.117 に答える
0

nextInt() の詳細を知らなくても、渡すパラメーターの前の「int」キーワードからエラーが発生することをお勧めします。試す:

lotteryNumbers[counter] = nextInt(10);
于 2012-04-09T22:54:13.323 に答える