【问题标题】:Java arrays Highest/Average/Median/Mode [closed]Java数组最高/平均/中值/模式[关闭]
【发布时间】:2016-06-18 08:09:03
【问题描述】:

无法正确打印中位数、平均值和众数。所需要的只是一些编码的移动和一些数字/单词的更改!

程序:

 public static int StudentAverage(int [] array)
        //almost there, some random big code is in front of the wording?
    {
      int avg;
      int sum=0;
      for(int i=0;i<4;i++){
       sum=sum+array[i];
    }
    avg=sum/4;
    System.out.println("The average is: " +avg);
    return avg;

    }

    public static int median(int [] array) {
    //i think this is way off also
    int size = 0;
    int[] grades = new int [size];
    for(int i=0;i<size;i++){
    grades[i]=0;
        }

        int i;  
        for( i=0;i<size;++i){
            int count=0;    
            for (int j=0;j<size;++j){
                if(grades[i]>grades[j]){
                    count++;

                }
            }   
            if(count==grades.length/4){
                break;

            }
        System.out.print("The median is: "+grades[i]);
        }

                return grades[i];
    }
    public static int mode(int [] array) {
    int maxValue = 0, maxCount = 0;

    for (int i = 0; i < array.length; ++i) {
        int count = 0;
        for (int j = 0; j < array.length; ++j) {
            if (array[j] == array[i]) ++count;
        }
        if (count > maxCount) {
            maxCount = count;
            maxValue = array[i];
        }
    }

    return maxValue;

客户:

public class StudentGradesClient {
public static void main(String [] args){
    int [] grades = new int [4]; 
            Random rand = new Random();
            for (int i = 0; i < grades.length; i++)
            {
                grades[i] = rand.nextInt(100) + 1;
            }
            StudentGrades.AscendingSort(grades);  
            System.out.println ("Student Grades");
            for (int i = 0; i<grades.length; i++)
                System.out.print(grades[i] + "\t");
                    System.out.println();

            StudentGrades.Highest(grades); 
            for (int i = 1; i < grades.length; i++)
            System.out.print(grades[i]);



           StudentGrades.StudentAverage(grades); 
           for (int i = 0; i<grades.length; i++)
           //some random big number keep popping up before
           System.out.println();

           //not printing at all         
           StudentGrades.median(grades);
             for (int i = 0; i<grades.length; i++)
                System.out.println();

}    
}

结果:

Student Grades
6   23  49  65  
The highest grade is: 65
234965The average is: 35


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at studentgrades.StudentGrades.median(StudentGrades.java:66)
    at studentgrades.StudentGradesClient.main(StudentGradesClient.java:32)
C:\Users\Marc\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

编辑

我快到了!提示非常有帮助!现在,我很难完成中位数和众数,而且在我的平均打印之前一直显示大量数字。

如果有人可以发布提示等 - 我不要求直接回答。我正在从共享的帮助/提示中学习,所以谢谢!在某些部分仍然有点困惑,非常感谢 - 再次感谢您!

【问题讨论】:

  • 错误是什么?越界? NPE?从 1 开始的 for 循环可能是
  • 发布家庭作业问题的一些技巧:首先,它们非常受欢迎,而且你不要求别人为你做这件事很好。然而,如果你从你的教育工作者那里明显地复制+粘贴的材料而没有明确声明它是家庭作业,它会引起怀疑——可能是不公平的。所以,介绍它,说出你在做什么,并使用引用块。您已经展示了程序和客户端代码,但我们不知道这是否是您的工作 - 如果这是您的工作,那么给它一些上下文是非常有帮助的,例如“这是我尝试过的”。
  • 另外,请保持标题简洁和有意义 - “需要一些帮助”是相当含蓄的,不需要进入。谢谢,祝你好运!
  • 哦,哎呀-你说得对。这绝对是我的作品,但没想到要给你提到的所有东西贴上标签。我一定会记住这一点的。

标签: java arrays


【解决方案1】:

一些提示:

  • Highest 方法中,查看println 相对于计算max 的循环的位置(进一步提示:它不是循环之后)
  • 为什么不将grades 数组传递给StudentAverage()median()
  • StudentAverage() 中,为什么要循环 100 次并将计算的总和除以 100?

新提示:

  • 在平均值前面打印的“随机”大数字根本不是随机的。仔细看看……
  • 来自作业:“中位成绩将位于已排序的成绩数组的中间”。

【讨论】:

  • 非常感谢您的提示!它确实有帮助。我现在将我的问题编辑到我仍然遇到问题的地方。
  • 终于明白了!真的想说谢谢你帮助我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多