2014-01-27 4 views
-4

Я новичок в программировании на Java, и я просто не могу понять, как найти среднее значение массива, и не знаю, как печатать массив назад. Это мой код до сих пор:Как я могу найти среднее значение этого?

public static void forwards(int nums, int arrayNums[]){ 
    for(int a=0;a<arrayNums.length;a++){ 
     nums =(int)(Math.random()*90+10); 
     System.out.print(nums+" "); 
    } 
    System.out.println(); 
    System.out.println(); 
    //Average of the array 
    int average=0; 
    for(int b=0;b<arrayNums.length; b++){ 
     average=(average+arrayNums[b]); 

    } 
    System.out.println(); 
    System.out.println(average); 
} 

public static void backwards(int nums, int[] arrayNums){ 
    //backwards of the array 
    for(int a=arrayNums.length; a>0;a--){ 
     System.out.print(nums+" "); 
    } 
} 


public static void main (String [] args){ 
    int[] arrayNums = new int [Integer.parseInt 
      (JOptionPane.showInputDialog("How many numbers do you want to input?"))]; 
    int nums = 1; 
    forwards(nums,arrayNums); 
    System.out.println(); 
    backwards(nums,arrayNums); 
+2

Слишком много, чтобы перечислить все. Начните с подпрограмм 'назад()' и 'forward()'. Как вы думаете, что такое параметр nums? Как вы думаете, что вы с ним делаете? – John3136

ответ

0

Для среднего ---->

for (int i = 0; i < array.length; i++) 
{ 
sum += array[i]; 
} 

int avegare = sum/array.length; 

Для Backwards ---->

for(int i = Array.length - 1; i >= 0;i--) 
+0

Не забудьте дать объяснение? – Radiodef

0

Backwards должна начинаться с arrayNums.length-1:

public static void backwards(int nums, int[] arrayNums){ 
    //backwards of the array 
    for(int a=arrayNums.length-1; a >= 0; a--){ 
     System.out.print(arrayNums[a]+" "); 
    } 
} 

Причина в том, что индексы идут от 0 до array.length-1. В основном это происходит в цикле for.

Для среднего, вы забыли разделение по количеству элементов ...

+0

Ухаживать за разъяснениями? Также вы говорите, чтобы начать с 'arrayNums.length - 1', но в вашем примере кода нет. – Radiodef

+0

Был слишком быстр ... обновил мой ответ –

0

Вот простой способ найти среднее. Просто сложите каждый из элементов, а затем разделить на общее количество элементов в массиве:

public static double average(int[] array) 
{ 
    int average =0; 
    for(int i =0; i< array.length; i++) 
    { 
     average += array[i]; 
    } 
    return average/array.length; 
} 

Вот задом метод. Начните с array.length-1, который является последним индексом. Оттуда, итерации вниз i--, а затем закончите, когда i равна нулю.

public static void printBackwards(int[] array) 
{ 
    for(int i =array.length-1; i>= 0; i--) 
    { 
    System.out.print(array[i] +" "); 
    } 
} 

При вызове методов, это синтаксис следует использовать:

double avg = average(arrayNums); 
System.out.println(avg); 

printBackwards(arrayNums); 
+0

Ухаживать за разъяснениями? – Radiodef

0

«я просто не могу понять, как найти среднее значение массива и не знаю, как напечатайте массив назад ».

  1. Для средних, вы должны использовать другой метод, вместо того, чтобы пытаться к нему в методе forwards

    public static double average(int[] arrayNums) { 
        double sum = 0; 
        ... 
        double average = // how do you get the average of something? 
        return average; 
    } 
    

    Я начал тебя с основным контуром. Вам в основном нужно добавить все числа в сумму, перейдя по массиву, а затем получить среднее значение, погрузив его по сумме чисел в массиве. Затем вы можете распечатать в среднем, как

    double average = average(array); 
    System.out.println(average) 
    
  2. для обратной вы хотите напечатать arrayNums[a] вместо nums. Вы также должны начать цикл с arrayNum.length - 1, так как в массиве arrayNums.length нет индекса, поэтому вы получите исключение ArerayOutOfBounds. Кроме того, вы хотите, 0-й индекс, так что вы хотите использовать >=

    for(int a = arrayNums.length - 1; a >= 0 ;a--) { 
         // print arrayNums[a] 
    
  3. Вы, кажется, делает то же неправильную вещь для forwards, как вы в backwards.Вы хотите, чтобы напечатать значение массивов для каждого индекса a, а не nums

  4. Я хотел бы также создать random массив в другом методе

    public static int[] randomArray(int num) { 
        int[] random = new int[nums]; 
    
          .... may array by looping 
        return random; 
    } 
    

    Тогда ты main вы могли бы просто сделать

    int[] array = randomArray(num); 
    forwards(array); 
    backwards(array); 
    double average = average(array); 
    System.out.println(average); 
    
  5. Как вы можете видеть, я передаю методы nums. Я думаю, вы должны взять этот параметр из подписи метода. Я не вижу для них никакой пользы.

+0

Начиная с 0 не будет обратной петли. Я думаю, что у ОР было правильное направление. ;) – Radiodef

+0

@ Radiodef спасибо, я расстраивался, глядя на все ошибки, поэтому я бросился через это. +1 к вам. –

+0

NP, хотя ваша петля все еще начинается с 'length'. Также я знаю, как это. Первоначально я писал свой собственный ответ, но затем я увидел комментарий от @ John3136, в котором указывалось, что были ошибки, которых я не видел. В этот момент начали появляться ответы «только код», поэтому я сдался. – Radiodef

Смежные вопросы