Проблема с получением данных для перехода в массив - PullRequest
0 голосов
/ 02 мая 2019

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

public static double Mean(double[] gradeArray, int numGrades) {
    double totalArray = 0.0;
    double mean;
    for (int i = 0; i < numGrades; i++) {
        totalArray = gradeArray[i] + totalArray;
    }

    mean = totalArray / numGrades;
    return mean;
}

public static double Median(double[] gradeArray, int numGrades) {
    double median;
    Arrays.sort(gradeArray, 0, numGrades);
    if (numGrades % 2 == 0) {
        median = ((gradeArray[(numGrades / 2)] + gradeArray[(numGrades / 2 + 1)]) / 2);
    } else {
        median = gradeArray[(numGrades / 2)];
    }
    return median;
}
   private void Enter_Grades_ButtonActionPerformed(java.awt.event.ActionEvent evt) {
    double[] totalArray = new double[25];
    String text_box_input_str = null;
    double text_box_input_num = 0;
    int numGrades = 0;
    String num_grades_str;
    DecimalFormat df = new DecimalFormat("#0.0##");

    do {
        try {
            text_box_input_str = JOptionPane.showInputDialog(null, "Enter Item Price", "Enter Price", JOptionPane.PLAIN_MESSAGE);
            if (text_box_input_str == null || text_box_input_str.isEmpty()) {
                return;
            }
            if (text_box_input_num > 0) {
                double[] gradeArray = null;
                gradeArray[numGrades] = text_box_input_num;
                numGrades++;
                num_grades_str = Integer.toString(numGrades);
                num_grades_text.setText(num_grades_str);
                Mean_Text.setText(df.format(Mean(gradeArray, numGrades)));
                Median_Text.setText(df.format(Median(gradeArray, numGrades)));
            }
        } catch (NumberFormatException e) {
            System.out.println("NumberFormatException caught");
            JOptionPane.showMessageDialog(null, "You Must Input numeric data!", "Bad Data!", JOptionPane.ERROR_MESSAGE);
        }

    } while (text_box_input_str != null && !text_box_input_str.isEmpty());


}                                                  

Я ожидаю, что программа рассчитает введенные данные, вычислит среднее и медиану, а затем отобразит итоги

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

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

  1. разбить ваш код на более мелкие части
  2. для каждой части напишите и метод, и тесты, которые доказывают, что метод выполняет то, что вы ожидаете
  3. как только отдельные части работают, напишите метод (и тесты), которые их используют.

Вы получите несколько методов с именами, такими как getValues, hasValue, printError, checkValidValue, showMedian и т. Д., Каждый из которых делает именно то, что вы хотите.

Я гарантирую, что если вы сделаете это, очень быстро станет ясно, что не так.

0 голосов
/ 02 мая 2019

похоже, что text_box_input_num установлен в 0, никогда не обновляется, но затем есть проверка if, если> 0

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