2015-05-30 4 views
-3

У меня есть массив, который принимает оценки учащихся от ввода. Я должен сделать метод, который найдет среднее число чисел внутри массива. Вот код, я до сих пор ...Создание метода для массива

int mark = Integer.parseInt(input.getText()); 
    if(mark <= 100){ 
    marks.add(Integer.parseInt(input.getText())); 
    input.setText(""); 
    warningLbl.setText(""); 
    } 
    else{ 
     warningLbl.setText("Please enter an number between 0-100"); 
    } 

Я хочу взять содержимое в «меток» массива и получить в среднем за них затем добавить его в моей области текста

public static double getAverage(int[] marks) 
{ 
    int sum = 0; 
    for(int i : marks) sum += i; 
    return ((double) sum)/marks.length; 
} 

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

+0

Когда-нибудь это будет лучше, чем ваш язык программирования! – Tchaps

+1

Кажется, вы спрашиваете «как рассчитать среднее количество элементов в массиве»; но ваш код не показывает никаких усилий для такого расчета. что ты уже испробовал? –

+0

Я исправил его, я думаю –

ответ

2

Если вы хотите найти среднее значение, хранящееся в массиве, попробуйте выполнить следующую функцию.

public static double average(int[] marks) 
{ 
int sum = 0; 
double average; 
for(int element: marks) 
{ 
    sum = sum + element; 
} 
average = (double)sum/marks.length; 
return average; 
} 

Надеюсь, это поможет! :)

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

public static String average(Integer[] marks) 
{ 
int sum = 0; 
double average; 
for (int i = 0; i < marks.size(); i++) 
{ 
    sum = sum + marks.get(i); 
} 
average = (double) sum/marks.size(); 
String averageString = Double.toString(average); 
return averageString; 
} 

Это возвращает ваше среднее значение в строке типа напрямую.

+0

Спасибо! Еще один быстрый вопрос: как мне получить эту ценность в моей текстовой области? –

+0

Теперь мы возвращаем среднее значение как двойной тип, поэтому нам нужно сначала преобразовать это в строку, если вам нужно получить это значение в своей текстовой области, поэтому вы можете использовать эту строку для этого: Строка resultInString = Double.toString (средние (знаки)); Теперь вы можете использовать строку «resultInString», чтобы поместить в свою текстовую область. Знаки –

+0

подчеркнуты красным цветом с ошибкой, указывающей «несовместимые типы: Список не может быть преобразован в int []» –

0

Существует несколько проблем с вашим текущим кодом.

Использование input.getText(); дважды означает, что он будет запрашивать ввод дважды. Имейте одну строку, например int mark = Integer.parseInt(input.getText());, а затем используйте переменную mark, где бы она ни понадобилась.

Чтобы проверить, существует ли число от 0 до 100 (я предполагаю, что это должно быть включено), это утверждение должно быть (mark >= 0 && mark <= 100).

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

Найти среднее легко. Просто используйте цикл foreach, чтобы суммировать все числа, а затем разделите его на длину массива.