我无法将随机生成器实例识别为对象,并且不允许在另一个.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。给出的错误说它找不到符号“Random Integer”。
我使用了代码import RandomInstanceGenerator.RandomInteger;
。
2)稍后再进行下一次尝试..
答案 0 :(得分:0)
当Java执行程序时,它会查找main
函数;在这种情况下,你的第二堂课。该类然后实例化您的第一堂课(通过new RandomInteger()
)。然后,您尝试调用第一个类的主要方法。
但请注意,该方法标记为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);
}
}
现在你要做的就是从你的主要功能中调用它:
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
。