方法返回0

时间:2015-05-30 21:01:03

标签: java

我制作了一个生成随机数的程序,但每次都返回0.0

程序:

import java.util.*;

public class RandomNumber {

    public static void main(String args[]){

        double QuantityColors = 5;
        double Mastermind = 0;

        Random(QuantityColors, Mastermind);
        System.out.println(Mastermind);
    }

    public static double Random(double QuantityColors, double Mastermind){

        Mastermind = Math.random();
        Mastermind = Mastermind * QuantityColors;
        Mastermind = (int) Mastermind;

        return Mastermind ;
    }
}

我一直在寻找问题所在,但问题在于回归。

3 个答案:

答案 0 :(得分:4)

a)你对"随机"

的结果一无所知

b)您无法修改Java参数。见change a functions argument's values?

答案 1 :(得分:3)

首先,您可以使用内置函数生成具有特定上限的下一个整数:Random.nextInt(int)。例如:

Random rand = new Random();
int masterMind = rand.nextInt(QuantityColors);

而不是自己编写Random方法。

使用内置设备几乎总是更好,因为它们已经过广泛测试,实现得相当快,等等。

接下来,您似乎假设Java使用 pass-by-reference 。如果您执行以下呼叫:

Random(QuantityColors, Mastermind);

Java将生成MasterMind值的副本。在方法中设置参数没有用。设置值的唯一方法 - 不是封装在对象中 - 是通过返回值。所以:

MasterMind = Random(QuantityColors, Mastermind);

简而言之:该方法不会返回0,您只是不做任何有用的事情。

因此,更好的解决方案是放弃Random方法并使用:

import java.util.*;

public class RandomNumber {

    public static void main(String args[]){

        int quantityColors = 5;
        Random rand = new Random();

        int mastermind = rand.nextInt(QuantityColors);
        System.out.println(mastermind);
    }
}

进一步评论

在随机方法中:

public static double Random(double QuantityColors, double Mastermind){

MasterMind参数相当无用,因为您立即使用其他值设置它,因此您最好将其删除并使用局部变量。

此外,Java标准规定class es,interface s等的名称以大写字母开头;带小写的方法和变量的名称。

最后不清楚为什么使用double s,因为你计算的所有值都显然是不可或缺的。

答案 2 :(得分:1)

如果你写了

,看起来你的代码会起作用
 Mastermind = Random(QuantityColors, Mastermind);

...因为Java是按值传递的,所以调用函数不会改变你传入的变量。