2013-12-16 1 views
-1

Так что я работаю над заданием и в значительной степени работаю с методами и возвращаюсь. Мой код до сих пор должен печатать числа в массиве, тогда он принимает эти числа и усредняет их. Я должен использовать методы, которые мне даны, в точном формате, который они даны, но я не уверен, почему среднее значение выходит неправильно. Это печатает 521674.2 как среднее, что явно неверно. Вот мой код:Почему я не получаю правильное среднее значение в своем java-коде?

public class Statistics 
{ 

    public static void main(String[] args) 
    { 
     int[] nums = new int[]{5, 2, 1, 6, 7}; 

     printArray(nums); 
     average(nums); 
     double store = average(nums); 
     System.out.println(store); 
    } 


    public static void printArray(int[] nums) { 
     for(int i = 0; i < nums.length; i++){ 
      System.out.print(nums[i]); 
      } 
    } 


    public static double average(int[] values) { 
     int sum = 0; 
     double average; 

     for(int i=0; i < values.length; i++){ 
      sum = sum + values[i]; 
     } 
     average = (double)sum/values.length; 
     return average; 
+3

Умм, из-за 'printArray'? –

+0

Почему бы не использовать 'java.util.Arrays.toString()'? –

ответ

5

На самом деле, он напечатал массив (52167), а затем в среднем (4.2).

Чтобы улучшить это, вы можете захотеть иметь System.out.println(); в самом конце printArray, чтобы выход был в отдельной строке.

Вы также можете иметь разделитель, например ,, чтобы он печатал 5,2,1,6,7. Например:

public static void printArray(int[] nums) { 
    for (int i = 0; i < nums.length - 1; i++) { 
     System.out.print(nums[i]); 
     System.out.print(","); 
    } 
    if (nums.length > 0) { // make sure array isn't empty 
     System.out.println(nums[nums.length - 1]); 
    } 
} 
1

В настоящее время ваш код печатает содержимое массива И среднее значение в той же строке без пробела между ними. Удалить вызов PrintArray(), и вы можете видеть, что он будет выводить только средний 4.2, который является правильным:

public static void main(String[] args) { 
    int[] nums = new int[] { 5, 2, 1, 6, 7 }; 

    //printArray(nums); 
    average(nums); 
    double store = average(nums); 
    System.out.println(store); 
} 
2

Там нет ничего плохого с кодом. Вы получаете путаницу из-за выхода.

Если вы напишете текст, касающийся printArray(), или измените его System.out.print() на System.out.println(), тогда вы увидите ожидаемые результаты.

0

Вы должны использовать .println() istead печати(), то это будет хорошо

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