【问题标题】:how to prompt user to input array values and create a data type in java如何提示用户输入数组值并在java中创建数据类型
【发布时间】:2021-09-25 20:15:31
【问题描述】:

我正在编写一个 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());
   }
}

任何帮助将不胜感激。

【问题讨论】:

标签: java arrays user-defined-data-types


【解决方案1】:

首先,您应该创建 Student 类:

    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;
    }

并且...使用您已经制作的最大查找器,但返回学生。

    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);
    }

【讨论】:

    【解决方案2】:

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

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

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

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

    扫描器类的对象:

    Scanner obj=new Scanner(System.in); 
    

    【讨论】:

    • 要存储多个值,请使用 for 循环之类的循环。
    猜你喜欢
    • 1970-01-01
    • 2016-01-10
    • 2022-12-08
    • 1970-01-01
    • 2017-04-16
    • 2015-08-14
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    相关资源
    最近更新 更多