2014-12-09 2 views
0

Полное назначение: взять 10 чисел с плавающей запятой в качестве входов и отобразить среднее число чисел, за которыми следуют все числа, которые больше среднего. Я смог получить среднее значение довольно легко, но когда я не могу его распечатать, цифры больше среднего. Я уже пробовал что-то раньше, но изменил его, так как он просто распечатал ячейку памяти, а не фактическое число. Любая помощь приветствуется.Floating Integer Array Код Java

Если это неясно в моем предыдущем вопросе: В настоящее время мой код выводит среднее число чисел, когда пользователь вводит их, и сравнивает это с новым номером. То, что я хотел бы сделать, это сравнить все числа, введенные в итоговое среднее из всех 10 чисел. Я не был так уверен, как это сделать.

import java.util.Scanner; 
public class ArrayProgram2 
{ 
    public static void main(String[]args) 
    { 
     Scanner scan = new Scanner(System.in); 
     double [] numberList = new double[10]; 
     double [] largerList = new double [10]; 
     int largerCounter = 0; 
     double sum = 0; 

     for(int i = 0; i < 10; i++){ 
      System.out.println("Please enter any number"); 
      double data = scan.nextDouble(); 
      numberList[i] = data; 
      sum += numberList[i]; 
      double average = sum/numberList.length; 

      if(data > average){ 
       largerList[largerCounter] = data; 
       largerCounter++; 
      } 

     } 
     for(int i = 0; i <largerCounter; i++){ 
      System.out.println("The numbers greater than the average are " + " " + largerList[i]); 
     } 
     double average = sum/numberList.length; 
     System.out.println("The average of the numbers is " + average); 
    }//main 

}//class 
+2

Ваш цикл, кажется, отслеживать элементы, которые больше, чем _current_ в среднем. Это то, что вы хотите? – ryanyuyu

+0

@ryanyuyu Я хотел, чтобы он отслеживал все числа, а затем сравнивал эти цифры с окончательным средним. Это было мне непонятно. Должен ли я использовать второй цикл за пределами этого, чтобы отслеживать это? Или объявить среднее значение окончательным? – Smith

+0

@Smith Вам понадобится второй цикл 'for'. Математически вы не укажете, какие цифры больше среднего, пока вы не вычислите среднее значение. Поэтому вам нужно подождать, пока среднее значение не будет вычисляться, а затем выполнить другой цикл. «Конечное» ключевое слово в Java абсолютно не имеет никакого отношения к тому, что это «окончательный средний», поэтому даже не думайте об использовании его. – ajb

ответ

-1

Попробуйте это:

import java.util.Scanner; 
public class ArrayProgram2 
{ 
public static void main(String[]args) 
{ 
    Scanner scan = new Scanner(System.in); 
    double [] numberList = new double[10]; 
    double [] largerList = new double [10]; 
    int largerCounter = 0; 
    double sum = 0; 

    for(int i = 0; i < 10; i++){ 
     System.out.print("Please enter any number: "); 
     numberList[i] = scan.nextDouble(); 
     sum += numberList[i]; 
    }  
    double average = sum/numberList.length; 
    for(int i = 0; i < 10; i++){ 
     if(numberList[i] > average){ 
      largerList[largerCounter] = numberList[i]; 
      largerCounter++; 
     } 
    } 
    for(int i = 0; i <largerCounter; i++){ 
     System.out.println("The numbers greater than the average are " + " " + largerList[i]); 
    } 
    System.out.println("The average of the numbers is " + average);  
}//main 
}//class 
+0

Даже если это помогло OP, вы ничего не делаете, чтобы объяснить, почему это правильно, или что было не так с исходным кодом. – Makoto

+0

Уже в комментариях упоминаются, каковы ошибки. Извините, но мой английский не очень хорош. – SkyMaster

+0

Я не вижу комментариев по этому вопросу. Опять же, это не должно быть слишком суровым, но думать о ответах как о своих индивидуальных сущностях, связанных с вопросом. Четкий ответ не должен опираться на вывод или контекст из комментариев (которые могут быть удалены позже). – Makoto

0

Ваш код будет получить окончательное среднее значение в конце цикла (все 10 элементов будут подведены, а затем разделить на 10). Второй цикл через входной двойной, чтобы сравнить их, в конечном итоге - это то, что вам нужно.

for(int i = 0; i <numberList; i++){ 
     if (numberList[i] > average) { 
      largerList[largerCounter] = data; 
      largerCounter++; 
     } 
    } 

должен идти сразу после получения всех исходных данных (ваш первый цикл)

0

Вы должны рассчитать только сумму до утруждать вычисления среднего, на данный момент вы вычисляя среднее из первый номер, то первые 2 числа, то первые 3 и т.д. первый double average = sum/numberList.length; не нужен, если (как первый комментарий государств) вы хотите сравнить текущее число к текущему среднему:

for(int i = 0; i < 10; i++){ 
    System.out.println("Please enter any number"); 
    double data = scan.nextDouble(); 
    numberList[i] = data; 
    sum += numberList[i]; 

    /*Not needed 
    double average = sum/numberList.length; 

    if(data > average){ 
     largerList[largerCounter] = data; 
     largerCounter++; 
    */ 
    } 

} 

Если вы хотите проверить, какие номера больше, чем общее среднее , изменить

for(int i = 0; i <largerCounter; i++){ 
     System.out.println("The numbers greater than the average are " + " " + largerList[i]); 
} 
double average = sum/numberList.length; 
System.out.println("The average of the numbers is " + average); 

к чему-то вроде:

double average = sum/numberList.length; //now needs to be calculated first 
System.out.println("The average of the numbers is " + average); 

System.out.println("The numbers greater than the average are") //display this once 

for(int i = 0; i <largerCounter; i++){ 
    if (numberList[i] > average) 
     System.out.println(" " + largerList[i]); //no need for a list to store the values greater than average, just print them if they meet the criteria. 
}