【问题标题】: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);