2015-08-19 2 views
-2

Моя программа позволяет размножать более двух компонентов на консоли (например, 2 * 3 * 5 = 30). Компоненты являются случайными числами. Случайные числа сохраняются в массиве и продукт их вычисляется b 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); 
} 

constuctor из RandomNumbers является

int a=(int) Math.random(); 
public RandomNumbers(int a){ 
    this.a=a; 
} 

Этот код часто не работает. Это, очевидно, очень раздражает и запутывает. Спасибо за помощь

+0

Какой метод 'получить()' делать? Неудачно ли это для «больших» значений (это может быть переполнение целых чисел)? –

+0

'Этот код часто не работает. 'Это не достаточное объяснение. Укажите, что именно не работает. –

+1

int a = (int) Math.random(); a всегда будет 0 – user

ответ

-1

Следующий код печатает ожидаемый результат.

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); 
} 

Если, однако, вы испытываете Целочисленное переполнение вы можете переключиться на BigInteger.

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); 
} 
-1
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; 
    } 
}