2013-12-06 5 views
2

Для каждого из 100 элементов calc выполните экземпляр объекта Claclal с случайно сгенерированными числами. Для этого используйте класс Random и метод .nextDouble() .Создание массива со случайными числами с определенной ссылкой на объект

Я уже создал 100 элементов, но я не могу добавить числа в массив. Когда я пытаюсь добавить какие-либо случайные числа, я получаю сообщение об ошибке, заявляя, что для этого требуется клакзал, но он нашел int.

public class Claclal { 

private static Claclal[] calc; 

public static void main(String[] args) { 
    Random r = new Random(); 
    calc = new Claclal[100]; 

    for (int i = 0; i <calc.length; i++) { 
     calc[i] = new Claclal(); 
     calc[i] = (int)(Math.random()); 
    } 

Ошибка, которую я получаю, находится на последней строке. Я не могу изменить ссылку на int, потому что это должно быть claclal reference. Что мне нужно изменить, чтобы заставить код работать?

+0

У вас есть массив 'Clacal', а не массив' int' – nachokk

+2

Добро пожаловать в SO. Если какой-либо из ответов поможет вам успешно решить вашу проблему, [пожалуйста, примите это] (http://stackoverflow.com/help/accepted-answer) –

ответ

0
calc[i] = (int)(Math.random()); 

Это не допускается, так как тип массива является Claclal, и вы пытаетесь вставить целое число.

Вам нужно взять поле в Claclal класс и добавить к нему.

Claclal c= new Claclal(); 
c.setRandomNumber((int)(r.nextDouble())); 
calc[i] = c; 

Тогда ваш код превращает

public class Claclal { 

    private static Claclal[] calc; 
    private int randomNumber; 

    public static void main(String[] args) { 
     Random r = new Random(); 
     calc = new Claclal[100]; 
     for (int i = 0; i < calc.length; i++) { 
      Claclal c = new Claclal(); 
      c.setRandomNumber((int) (r.nextDouble())); 
      calc[i] = c; 
     } 
    } 

    public int getRandomNumber() { 
     return randomNumber; 
    } 

    public void setRandomNumber(int randomNumber) { 
     this.randomNumber = randomNumber; 
    } 
} 

Более вы используете Math.random() и вы хотите использовать r.nextDouble()

1

У вас есть массив Clacal типа, а не целого типа. У вас есть 2 варианта

1-й) Создайте объект в Clacal, который является двойным.

Пример:

public class Claclal { 

private static Claclal[] calc; 
private final double number; 

public Clacal(double number){ 
    this.number=number; 
} 

public static void main(String[] args) { 
    Random r = new Random(); 
    calc = new Claclal[100]; 

    for (int i = 0; i <calc.length; i++) { 
     calc[i] = new Claclal(r.nextDouble()); 
    } 
} 

второй) Сделайте двойной массив

public class Claclal { 

private static double[] calc; 

public static void main(String[] args) { 
    Random r = new Random(); 
    calc = new Claclal[100]; 

    for (int i = 0; i <calc.length; i++) { 
     calc[i] = r.nextDouble(); 
    } 
} 
0

Вы получаете сообщение об ошибке, потому что claclal класса оленьей коже иметь любой атрибут. Добавить атрибут в claclal, как показано ниже:

import java.util.Random; 

public class Claclal { 

    private static Claclal[] calc; 
    int value; 

    public Claclal(int value) { 
     this.value = value; 
    } 

    public static void main(String[] args) { 
     Random r = new Random(); 
     calc = new Claclal[100]; 

     for (int i = 0; i < calc.length; i++) { 
       calc[i] = new Claclal(r.nextInt()); 
       System.out.println(""+calc[i].value); 
     } 
    } 
} 
+0

Это работает, но это должно быть .nextDouble вместо – tawnpawt

+0

@tawnpawt: Нет, это НЕ ДОЛЖНО быть nextDouble, это должно быть nextInt. Если вы используете nextDouble и прикладываете к int, большинство значений будет равно 0, поэтому ваш массив будет заполнен 0. Отредактированный ответ и использованный nextInt, вы можете проверить с помощью nextDouble и увидеть, что большинство значений будет 0. –

+0

@tawnpawt: [nextDouble] (http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextDouble()) дает значение от 0.0 до 1.0, когда вы бросаете это к 'int', вы получаете 0, только когда 1.0 сгенерирован, вы получаете 1, это то, что вы ожидаете в этой программе? только 0 и 1? –

0

Вы пытаетесь присвоить int значение в качестве элемента Claclal массива.

Вы должны добавить поле в класс Claclal, чтобы сохранить двойное значение в каждом объекте. В вашем методе main используйте объект Random, который вы создали для получения нового случайного значения double конструктору каждого нового экземпляра Claclal в массиве.

import java.util.Random; 

public class Claclal { 
    // the double field to store a value 
    private double value; 

    public Claclal(double value) { 
     this.value = value; 
    } 

    // getter 
    public double getValue() { 
     return this.value; 
    } 

    // setter 
    public void setValue(double value) { 
     this.value = value; 
    } 

    public static void main(String[] args) { 
     Random r = new Random(); 
     Claclal[] calc = new Clalcal[100]; 

     for (int i = 0; i < calc.length; i++) { 
      // add new Claclal object with a random double value 
      calc = new Claclal(r.nextDouble()); 
     } 
    } 
} 
Смежные вопросы