我的阵列的一些问题

我的讲师给了我这些问题:
1. 编写一个程序来执行以下操作:
a. 从用户 (n)
b获取学生人数。要求用户输入 n 个学生的 n 个成绩,将它们存储在一个数组中。
C。打印出这 n 个等级的最大值、最小值和平均值。
注意:编写3个方法来返回数组的最大/最小/平均元素并在本程序中使用它们。

我尝试这样做,但我的程序的输出不符合我的预期。这是我的代码:

package javaapplication2;

import java.util.*;


public class JavaApplication2 {

    public static double max(double[]x) {

        int i = 0;

        int max=0;

        for (i=0; i < x.length; i++) {

          if (max < x[i]) {

            max = i;

          }         

        }

        return max;    

    }

    public static double min(double[]y) {

        double min = max(y);

        for (int i =0; i < y.length; i++) {

            if (y[i] < min) {

                min = y[i];

            }

        }return min;

    }


    public static void main(String[] args) {

        String name ="";

        String choice;

        int times =0;

        double score;  


        Scanner input = new Scanner(System.in); 

        System.out.println("Enter student's name: ");

        name = input.nextLine();

        while (name != "exit") {

            double grades [] = new double [5000];

            System.out.println("Enter student's score: ");

            score = Double.parseDouble(input.nextLine());            

            grades[times] = score;            

            times += 1;            

            System.out.println("The max grade is: " + max(grades));

            System.out.println("The min grades is: " + min(grades));

            System.out.println("Enter student's name: ");

            name = input.nextLine();       


        }


    }

}

这是我的输出:


Enter student's name: 

k

Enter student's score:30


The max grade is: 0.0

The min grades is: 0.0

Enter student's name:

是的,我不知道为什么我的最高等级和最低等级是 0.0。哪位大侠帮帮我,谢谢!!!


不负相思意
浏览 313回答 2
2回答

qq_笑_17

在计算最大值的函数中,您应该使用:if&nbsp;(max&nbsp;<&nbsp;x[i])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;=&nbsp;x[i];}因为你想返回元素而不是它的索引。此外,您可能希望grades在 while 循环之前声明您的数组,否则它会在每次迭代时创建一个新数组。为了提高代码性能:1.你可以在你的 max/min 函数中,一旦遇到 value=0 就退出循环。在您当前的代码中,即使只有一个条目,循环也会迭代 5000 次。2.在你的min函数中,double min = max(y);你应该使用double min = Double.MAX_VALUE;.&nbsp;它将防止不必要的max函数调用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java