2013-11-22 1 views
0

У меня есть некоторый псевдо-код, который я ввел в код Java. Это вычисление префикса средних:Создание случайных чисел внутри массива

Algorithm 4.1. PrefixAverages1(X) 
Input: X, a 1-D numerical array of size n 
1) Let A = an empty 1-D numerical array of size n 
2) For i = 0 to n-1 
3) Let s = X[0] 
4) For j = 1 to i 
5)  Let s = s + X[j] 
6) End For 
7) Let A[i] = s /(i+1) 
8) End For 
Output: An n-element array A of numbers such that A[i] 
     is the average of elements X[0],X[1], … ,X[i] 

А вот Java код, который я написал:

public class Prefix1 { 

    public static void main(String[] args) { 

     algo1(); 
     } 
private static void algo1(){ 
     int X[] = new int[10]; 
     int randomNumber; 
     int o = 1; 
     for (int i=0; i<o; i++) { 
      randomNumber = (int) (Math.random() * 100) + 1 ; 
      X[i] = randomNumber; 
     } 
     int n = X.length; 
     int A[] = new int [n]; 


     for (int i=0; i<n-1; ++i) 
     { 
      int s = X[0]; 
      for (int j=1; j<i; ++j) 
      { 
       s = s + X[j]; 
      } 

      A[i] = s/(i+1); 
     } 

    } 

У меня есть проблема в том, что я не уверен в том, как генерировать случайные числа в этом массив, а затем запустить этот массив через algortihm. Я уверен, что мой код Java верный, основанный на псевдокоде, любая помощь будет принята с благодарностью, спасибо :)

+1

Всегда указывайте «не работает». – keyser

+0

Знаете ли вы, что первый цикл for работает только один раз? –

+0

для стартера, потому что ваш o = 1, вы не заполняете весь массив, но вы помещаете только один элемент. – user902383

ответ

1

Посмотрите на свой цикл for. Он эффективно говорит i < 1. Используйте длину массива:

for (int i=0; i<X.length; i++) { 
     randomNumber = (int) (Math.random() * 100) + 1 ; 
     X[i] = randomNumber; 
    } 
+0

Я пробовал это, но когда я распечатываю A или X, я получаю вывод: [I @ 45bab50a @KaiSternad – user3021571

+0

Вы пытались перебирать массив? Вы не можете напрямую распечатать его. –

+0

Я попробовал это, и теперь он печатает цифры в массиве, но я просто понял, что хочу напечатать среднее число чисел в массиве. @Kai – user3021571

0

Я считаю, что это ваш вопрос:

int o = 1; 
for (int i=0; i<o; i++) { 

вы заселены только i=0 и остановились, когда i=1

0

Используйте следующий код, чтобы заполнить все массив со случайными числами. Когда вы устанавливаете o=1, вы просто устанавливаете первый элемент массива на случайное число.

private static void algo1(){ 
    int X[] = new int[10]; 
    int randomNumber; 
    for (int i=0; i<X.length; i++) { 
     X[i] = (int) (Math.random() * 100) + 1 ; 
    } 
} 
0

In Your For Loop o = 1 это только на время цикла будет работать

 int o = 1; 
     for (int i=0; i<o; i++) { 
      randomNumber = (int) (Math.random() * 100) + 1 ; 
      X[i] = randomNumber; 
     } 

Меняем o в X.length;

 int o = X.length; 
     for (int i=0; i<o; i++) { 
      randomNumber = (int) (Math.random() * 100) + 1 ; 
      X[i] = randomNumber; 
     }