新的对象实例无法识别 - Java

时间:2013-04-10 01:36:25

标签: java instances

我无法将随机生成器实例识别为对象,并且不允许在另一个.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)稍后再进行下一次尝试..

1 个答案:

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