Java期望“.class”文件

4
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”的错误。

4个回答

12

在调用方法时,Java已经知道方法参数的类型,因此您不需要指定它。

nextInt(int 10);

应该是:

nextInt(10);

当然前提是您确实已经定义了一个名为nextInt的方法。(在您的代码示例中我没有看到该方法)


2

Java是面向对象的语言。你在调用nextInt(10)方法时,所针对的对象是什么?我没有看到它。编译器会隐式地假定这一点。你的Lottery类是否在某处使用了Random实例?我没有看到它。

我认为你需要像这样:

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

那么你的循环应该这样做:
lotteryNumbers[counter] = this.random.nextInt(10);

我对你所做的事情有其他问题:

  • 到处都有不必要的“神奇”数字。可以使这个类比你现在拥有的更加灵活。
  • 像这样将输入混合到类中是一个坏主意。创建一个抽象层,您可以将值传递给它,并保留获取值的位置。考虑“单一职责”。
  • 我不明白为什么Lottery需要一个私有数据成员来存储用户号码。但是,我可以看出它可能有一种方法来接受用户号码并告诉他们是否赢了。在我看来,您创建了一个糟糕的抽象层。

这可能会让你有一段时间。


那就是问题所在。我的教授让我们买的书上写了随机方法,但却跳过了需要创建随机对象的部分。 - Chris
有点难不责怪教授。他让我们买书,说要读它并完成作业。所以在我看来,这是他不称职的错。我本可以在家里自己做这些事情而不用花钱。 - Chris
就你帖子中的编辑而言,我正在按照书上的要求完成任务。我有C++编程方面的经验,并且那位教授强调良好的编程风格。这个教授很蠢,但我必须按照他的要求去做,否则就会失败。 - Chris
这是学位所必需的。它有很大的影响力,但当需要遵循特定的指示时,我会遵循它们。即使对我来说没有意义。 - Chris

2

什么是 int

如果你想进行强制类型转换,应该使用 (int)

你之所以会得到那个错误,是因为当 Java 在表达式位置看到一个类型名时,它会认为你试图引用该类型的类对象,例如 int.class


0

不了解nextInt()的具体情况,我建议错误可能来自于你传递给它的参数前面的'int'关键字。请尝试:

lotteryNumbers[counter] = nextInt(10);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接