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(int 10);”的行 得到“.class 预期”错误。

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 回答