-1

我无法让随机生成器实例被识别为对象,并且它不允许在另一个 .class 文件中使用。随机整数生成器的基本代码是这样的:

package RandomInstanceGenerator;
import java.util.Random;

/** Generate 10 random integers in the range 0..99. */
public final class RandomInteger {

  public static final void main(String... aArgs){
    log("Generating 10 random integers in range 0..99.");

    //note a single Random object is reused here
    Random randomGenerator = new Random();
    for (int idx = 1; idx <= 10; ++idx){
      int randomInt = randomGenerator.nextInt(100);
      log("Generated : " + randomInt);
    }

    log("Done.");
  }

  private static void log(String aMessage){
    System.out.println(aMessage);
  }
}

我试图让下面的代码作为新实例运行上面的代码。我尝试了几种从其他学习中对我来说很明显的方法,但它们使我失败了,因此我请求其他人的知识以帮助理解。我说,在理解我从另一个来源复制和粘贴基本代码时,它作为它自己的小 .class 运行。这是尝试创建新实例的代码:

package RandomInstanceGenerator;
import java.util.Random;
class Inst {
  public static void main (String args[]) {
    RandomInteger rig=new RandomInteger();
    rig.main(args);
  }
}

我确定两者都需要编辑,希望我能解决这个问题,这样它对我有用。

尝试更改的列表:

1) 尝试导入 RandomInteger.class。返回的错误说它找不到符号“随机整数”。

我使用了代码import RandomInstanceGenerator.RandomInteger;

2)稍后进行下一次尝试..

4

1 回答 1

0

当 Java 执行一个程序时,它会寻找一个main函数;在这种情况下,在您的第二堂课中。然后该类实例化您的第一个类(通过new RandomInteger())。然后,您尝试调用第一个类的 main 方法。

但请注意,该方法标记为static。静态方法只能在类上执行,而不是在特定的实例化对象上执行。如果您要使用 RandomInteger.main() 您可能会得到不同的结果:

class Inst {
  public static void main (String args[]) {
    RandomInteger.main(args);
  }
}

但请注意,这相当于只运行 RandomInteger 作为它自己的程序。如您所说,如果您想将程序作为对象上的方法运行,这就是您想要的:

public final class RandomInteger {
  private Random randomGenerator = new Random(); //A single object can reuse this component

  //function prints out x random numbers between low and high
  //Note that your function should do ONE thing, therefore do not make it also interpret
  //your program arguments!
  public void logXRandomNumbers(int x, int low, int high){ 
    log("Generating " + x + " random integers in range " + low ".." + high);

    int range = high - low;
    //you really should do a sanity check here to ensure the range is valid.

    //note a single Random object is reused here
    for (int idx = 1; idx <= x; ++idx){
      int nextResult = this.randomGenerator.nextInt(range) + low;
      log("Generated : " + nextResult);
    }

    log("Done.");
  }

  //This function is probably overkill
  private static void log(String aMessage){
    System.out.println(aMessage);
  }
}

现在你所要做的就是从你的 main 函数中调用它:

public static void main (String args[]) {
  RandomInteger generator = new RandomInteger();
  generator.logXRandomNumbers(10, 0, 100);
}

至于您的导入,两个类应该具有相同的包。为简单起见,让我们说一下Generator

package Generator;

只有你的第二个类(不是很好命名的 Inst)需要导入你的生成器/日志类:

import Generator.*;

或者

import Generator.RandomInteger;

确保这两个文件都位于名为“Generator”的同一目录中,并且您正在javac从上面的目录运行。

于 2013-04-10T02:24:10.777 回答