如何提示用户输入数组值并在 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);
}
我正在编写 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);
}