Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 失败乘法_Java_Random_Multiplication - Fatal编程技术网

Java 失败乘法

Java 失败乘法,java,random,multiplication,Java,Random,Multiplication,我的程序在控制台上显示两个以上组件的乘法(例如,2*3*5=30)。这些成分是随机数。随机数保存在数组中,并计算出它们的乘积b a for循环。此方法的代码是 public static RandomNumbers productpro(RandomNumbers a[]){ int r=1; for(int j=0;j<a.length;j++){ r=r*a[j].get(); } return new RandomNumbers(r);

我的程序在控制台上显示两个以上组件的乘法(例如,2*3*5=30)。这些成分是随机数。随机数保存在数组中,并计算出它们的乘积b a for循环。此方法的代码是

public static RandomNumbers productpro(RandomNumbers a[]){
    int r=1;
    for(int j=0;j<a.length;j++){
        r=r*a[j].get();
    }
    return new RandomNumbers(r);
}
此代码通常不起作用。这显然是非常烦人和令人困惑的。
感谢您的帮助

以下代码将打印预期结果

private static class RandomNumbers {

    final int a;

    private RandomNumbers(int a) {
        this.a = a;
    }

    private int get() {
        return a;
    }

    public String toString() {
        return Integer.toString(a);
    }
}

public static RandomNumbers productpro(RandomNumbers a[]) {
    int r = 1;
    for (int j = 0; j < a.length; j++) {
        r = r * a[j].get();
    }
    return new RandomNumbers(r);
}

public void test() {
    RandomNumbers[] a = {new RandomNumbers(2), new RandomNumbers(3), new RandomNumbers(5)};
    RandomNumbers r = productpro(a);
    System.out.println("productpro(" + Arrays.toString(a) + ") = " + r);
}
import java.util.*;
公共类主类{
公共静态void main(字符串[]args){
//创建随机数
int[]arr=新的int[3];
Random rand=新的Random();

对于(int i=0;i,
get()
方法在做什么?对于“大”值(可能是整数溢出)是否失败?
此代码通常不起作用。
这不是一个充分的解释。请指定什么不起作用。int a=(int)Math.random();a将始终为0“此代码通常不起作用”我的猜测是:如果将足够多足够大的数字相乘,则会出现整数溢出。Protip:编写一个单元测试,该测试通过各种测试用例的固定值,依赖项仅在集成测试/生产中注入随机数生成器。单元测试将为您提供一种可靠的方法来检查代码执行您希望它执行的操作。
private static class RandomNumbers {

    final int a;

    private RandomNumbers(int a) {
        this.a = a;
    }

    private int get() {
        return a;
    }

    public String toString() {
        return Integer.toString(a);
    }
}

public static RandomNumbers productpro(RandomNumbers a[]) {
    int r = 1;
    for (int j = 0; j < a.length; j++) {
        r = r * a[j].get();
    }
    return new RandomNumbers(r);
}

public void test() {
    RandomNumbers[] a = {new RandomNumbers(2), new RandomNumbers(3), new RandomNumbers(5)};
    RandomNumbers r = productpro(a);
    System.out.println("productpro(" + Arrays.toString(a) + ") = " + r);
}
private static class RandomNumbers {

    final BigInteger a;

    private RandomNumbers(BigInteger a) {
        this.a = a;
    }

    private RandomNumbers(long a) {
        this.a = BigInteger.valueOf(a);
    }

    private BigInteger get() {
        return a;
    }

    public String toString() {
        return a.toString();
    }
}

public static RandomNumbers productpro(RandomNumbers a[]) {
    BigInteger r = BigInteger.ONE;
    for (int j = 0; j < a.length; j++) {
        r = r.multiply(a[j].get());
    }
    return new RandomNumbers(r);
}

public void test() {
    RandomNumbers[] a = {new RandomNumbers(2), new RandomNumbers(3), new RandomNumbers(5)};
    RandomNumbers r = productpro(a);
    System.out.println("productpro(" + Arrays.toString(a) + ") = " + r);
}
import java.util.*;
public class Mainclass {

    public static void main(String[] args) {
//creating random numbers
        int [] arr = new int[3];
        Random rand = new Random();
        for(int i =0; i<arr.length; i++)
            arr[i]= rand.nextInt(100-1)+1;// only generates numbers between 1-100but you can change it
        for(int i =0; i<arr.length; i++)
            System.out.print(arr[i]+" ");
       Randomnumbers r = new Randomnumbers(arr);
System.out.println("The product of random numbers");
       System.out.println(r.productpro(arr));
    }

}
//java class of random numbers.
import java.util.*;
public class Randomnumbers {
    int [] arr;
    public Randomnumbers(int [] arr){
        this.arr=arr;

    }
//method to generate product of three random numbers in array
    public int productpro(int [] arr){
        int pro=1;
        for(int i = 0; i<arr.length; i++){
            pro = arr[i]*pro;
        }
        return pro;
    }
}