如何提示用户输入数组值并在 java 中创建数据类型

how to prompt user to input array values and create a data type in java

我正在编写 java 代码,它应该提示用户输入 N 名学生的成绩,并且应该输出最高成绩,我的代码运行良好,但我想给出用户能够输入数组的内容,我想为数组创建一个名为 Student 的数据类型。

public class Test3 {
   static double grades[] = {85, 99.9, 78, 90, 98};
       
   static double largest() {
      int i;
      double max = grades[0]; 
      for (i = 1; i < grades.length; i++)
         if (grades[i] > max)
            max = grades[i];
        
      return max;
   }
   public static void main(String[] args) 
   {
      System.out.println("Highest grade is :  " + largest());
   }
}

如有任何帮助,我们将不胜感激。

您可以创建一个对象并使用该对象调用数组来存储值。例如:

test3obj= new Test3(); // creating an object.

使用test3obj调用数组来存储如下值:

test3obj.grades[i]=(object of scanner class).nextDouble();

扫描仪对象 class:

Scanner obj=new Scanner(System.in); 

首先,您应该创建 Student class:

    public class Student {

        private double grade;

        // empty constructor
        public Student() {}
        
        // all args constructor
        public Student(double grade) {
            this.grade = grade;
        }

        public double getGrade() {
            return grade;
        }

        public void setGrade(double grade) {
            this.grade = grade;
        }

        @Override
        public String toString() {
            return "Student{" +
                    "grade=" + grade +
                    '}';
        }
    }

为避免重复代码,可以使用Lombok library。它为您创建构造函数、getter、setter、toString() 等等。

之后,您可以创建一个输入学生成绩的方法。

    public static Student[] inputStudens() {
        Scanner sc = new Scanner(System.in);
        System.out.println("How many students?");
        int N = sc.nextInt();

        Student[] students = new Student[N];
        for (int i=0; i<N; i++) {
            System.out.println("What's the grade for student " + i + ":");
            double grade = sc.nextDouble();
            Student student = new Student(grade);
            students[i] = student;
        }

        return students;
    }

并且...使用您已经创建的最大查找器,但返回 Student。

    public static Student maxGrade(Student[] students) {
        int max = 0;
        for (int i = 1; i < students.length; i++) {
            if (students[i].getGrade() > students[max].getGrade()) {
                max = i;
            }
        }
        return students[max];
    }

现在我们只需要在main()中调用这些方法即可。

    public static void main(String[] args) {
        Student[] students = inputStudens();
        Student student = maxGrade(students);
        System.out.println("Student with highest grade is: " + student);
    }