每当在新程序中运行返回值时,应从另一个Java类调用方法

时间:2015-10-03 20:13:15

标签: java static

我是Java的初学者,我尝试制作两个不同的程序,但我遇到了将数据从一个转移到另一个的问题。

第一个程序就像一个随机数生成器。它看起来像这样(简化但同样的想法):

public class Tester{
  public static double num;
  public static void main(String[] args){
    double n;
    n = Math.random() * 100;
    System.out.println(n);
    num = n;
  }
  public static double gen(){
    return num;
  }
}

然后,我试图调用该函数并打印n个随机数并将它们全部放入列表中。该计划如下:

public class lister{
  public static void main(String[] args){
    //declare
    int n,counter;
    double[] list;
    double num;
    //initialize
    n = Integer.parseInt(args[0]);
    list = new double[n];
    counter = 0;
    double num = Tester.gen();
    //add all generated numbers to a list, print them
    while (counter < n){
      num = Tester.gen();
      list[counter] = num;
      System.out.println(num);
      ++counter;
    }
  }
}

但是num每次最终都是0.0。我试图不让它变得静止,但是它带来了它自己的一系列问题,而且据我所知,静态并不代表不可改变。

如何在每次运行while循环时修复此值以使num成为新数字?这甚至可能吗?

3 个答案:

答案 0 :(得分:0)

以下是建议的答案:

public class Tester {
public static double gen(){
    double n;
    n = Math.random() * 100;
    return num;
  }
}

public class lister{
  public static void main(String[] args){
    //declare
    int n,counter;
    double[] list;
    double num;
    //initialize
    n = Integer.parseInt(args[0]);
    list = new double[n];
    counter = 0;
    double num = Tester.gen();
    //add all generated numbers to a list, print them
    while (counter < n){
      num = Tester.gen();
      list[counter] = num;
      System.out.println(num);
      ++counter;
    }
  }
}

答案 1 :(得分:0)

如果运行列表类main(),则不会调用Tester类的main()方法,因此Math.random()永远不会运行。试试这个:

public class Tester{
  public static double gen(){
    return Math.random() * 100;
  }
}

答案 2 :(得分:0)

问题是你永远不会在Tester.main()中调用lister.main()(你只需要调用Tester.gen()方法),因为像Tester.num这样的实例变量总是被初始化为0.0值,除非您为其指定不同的值,否则每次使用时都会在lister.main()中获得此值。

您的代码应该通过稍微调整Tester.gen()来工作,以便它实际返回一个随机数,如下所示:

public static double gen(){
    return Math.random() * 100;
}

在此之后,您的代码应该可以正常工作。

除此之外,Tester.main()非常无用,因为您已经在使用/运行lister,并且只能使用一个main()作为Java SE应用程序的入口点。