2012-04-09 79 views
3
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(int 10);"という行は、 ".class expected"エラーが発生します。Java ".class expected"

+0

問題が解決しました。速い応答のためのThx – Chris

答えて

7

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

nextInt(int 10); 

は次のようになります。これは、あなたが実際にメソッド nextIntが定義されていることを、当然のことながら、想定している

nextInt(10); 

。 (コードサンプルには表示されません)

1

intとは何ですか?

キャストしようとしている場合は、(int)である必要があります。

エラーが発生する理由は、Javaで式が必要な型名が見つかると、その型のクラスオブジェクトを参照しようとしていると考えられるからです。 int.class

0

nextInt()の詳細を知らないと、パラメータに渡す前に 'int'キーワードからエラーが発生する可能性があります。試してみてください。

lotteryNumbers[counter] = nextInt(10); 
2

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

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

は、その後、あなたのループがこれを実行する必要があります:

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

を私は他の問題を持って何をやっていると:

  • は、私はあなたがこのようなものが必要だと思います不必要な「魔法」の数はどこにでもあります。このクラスをあなたが持っているものよりはるかに柔軟にすることが可能です。

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

これはしばらくお待ちしています。

+0

それは問題になるでしょう。私の教授が私たちに教えてくれた本はランダムな方法を教えてくれますが、ランダムなオブジェクトを作成するのに必要な部分をスキップしました – Chris

+0

私はあなたの本当の問題だと思っています。言い訳として本や教授を使わないでください。 Javaを学ぶ。言語は、メソッドがクラスのインスタンスまたはクラスのインスタンスのいずれかに関連付けられていることを要求します。すべてに質問してください:物事をコピーするだけではありません。 – duffymo

+0

教授を責めないのは難しいです。彼は私たちに本を買うようにさせ、それを読んで課題をすると言った。だからIMOそれは本当の教授ではないという彼のせいです。私は支払っていない家でそのことをやっていた可能性があります。 – Chris