我是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成为新数字?这甚至可能吗?
答案 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应用程序的入口点。