2012-04-09 347 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期望」的錯誤。Java「.class expected」

+0

問題解決。 Thx爲快速響應 – Chris 2012-04-09 23:00:10

回答

7

Java已經知道方法參數的類型;您在調用方法時無需指定它。

nextInt(int 10); 

應該是:

nextInt(10); 

這是假設,當然,前提是你確實有定義的方法nextInt。 (我沒看到它在你的代碼示例中)

1

什麼是int

如果您嘗試投射,應該是(int)

你得到這個錯誤的原因是,當Java看到一個類型名稱的表達是預期的,它認爲你試圖引用該類型的類對象,例如, int.class

0

不知道nextInt()的細節,我會建議錯誤將來自'int'關鍵字之前,你傳遞給它的參數。試試:

lotteryNumbers[counter] = nextInt(10); 
2

Java的一種面向對象的語言。你在什麼對象上調用nextInt(10)?我沒看到一個。編譯器會隱含地假設這一點。您的Lottery是否在某處使用Random實例?我沒看到它。

我想你需要的東西是這樣的:你在做什麼

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

我有其他的問題:

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

那麼你的循環應該這樣做

  • 無處不在的「魔術」數字。有可能讓這個類比你有更多的靈活性。
  • 將輸入混合到像這樣的類中是一個壞主意。抽象一下,你可以傳遞值並離開你從單獨獲得它們的地方。認爲「單一責任」。
  • 我不明白爲什麼Lottery需要用戶號碼的私人數據成員。不過,我可以看到它可能有一個方法可以接受用戶號碼,並告訴他們是否贏了。在我看來,你創造了一個糟糕的抽象。

這可能會讓你去一段時間。

+0

這將是問題。我的教授讓我們得到的這本書告訴我們隨機的方法,但是跳過了你需要創建一個隨機對象的部分 – Chris 2012-04-09 22:58:37

+0

我認爲這是你真正的問題。不要以書或教授爲藉口;學習Java。該語言要求方法與類的實例或類本身的靜態相關聯。質疑一切:不要只是複製東西。 – duffymo 2012-04-09 23:03:04

+0

這種難以不責怪的教授。他讓我們買了一本書,說讀了它並做了作業。所以海事組織是不是真正的教授是他的錯。我本可以在家裏做這種事,不用付錢。 – Chris 2012-04-09 23:40:39