循环中每个用户输入的新变量
New variable for each user input in a loop
我目前正在开发一个程序,该程序接受 class 中学生人数的用户输入,然后(在 while 循环中)接受学生人数及其平均值的用户输入grade,然后经过计算,打印class.
的最高分、最低分和平均分
这是我目前所做的:
import java.util.Scanner;
public class ClassMarks {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter number of students in class: ");
int students = input.nextInt();
int x = students;
while (x > 0) {
System.out.println("Enter student number: ");
double studentNumber = input.nextDouble();
System.out.println("Enter student grade: ");
double studentGrade = input.nextDouble();
x = x - 1;
}
}
}
我正在寻找一种方法让程序为我创建一个新变量,将每个新用户输入的学生成绩存储在 while 循环中。
例如) studentGrade1, studentGrade2, studentGrade3 ...
使用列表怎么样。
List<Student> students = new ArrayList<>()
并在 while 循环中
创建学生更新其字段然后将其添加到列表
Student myNewStudent = new Student();
// update fields
students.add(myNewStudent);
要迭代列表,您可以使用 for 循环。
for (Student s : students) {
// Get student info
}
将其调整到您的代码中:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ClassMarks {
// Create an inner class Student
public static class Student {
public double studentNumber;
public double studentGrade;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter number of students in class: ");
int students = input.nextInt();
int x = students;
// Create a list to hold your students
List<Student> studentsList = new ArrayList<>();
while (x > 0) {
Student myNewStudent = new Student();
System.out.println("Enter student number: ");
myNewStudent.studentNumber = input.nextDouble();
System.out.println("Enter student grade: ");
myNewStudent.studentGrade = input.nextDouble();
// update fields
studentsList.add(myNewStudent);
x = x - 1;
}
// Loop your student List
for (Student s : studentsList) {
// Get student info
System.out.println("Student number is: "+s.studentNumber+" grade is : "+s.studentGrade);
}
}
}
在while
循环之前,创建变量highest/lowest grades
double highestGrade = Double.MIN_VALUE, lowestGrade = Double.MAX_VALUE;
double gradeSum = 0;
然后当你遍历这些值时,适当地调整变量,例如
if (studentGrade > highestGrade)
highestGrade = studentGrade;
if (studentGrade < lowestGrade)
lowestGrade = studentGrade;
gradeSum += studentGrade;
然后在循环结束后,像这样得到平均值
double averageGrade = gradeSum / students;
我目前正在开发一个程序,该程序接受 class 中学生人数的用户输入,然后(在 while 循环中)接受学生人数及其平均值的用户输入grade,然后经过计算,打印class.
的最高分、最低分和平均分这是我目前所做的:
import java.util.Scanner;
public class ClassMarks {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter number of students in class: ");
int students = input.nextInt();
int x = students;
while (x > 0) {
System.out.println("Enter student number: ");
double studentNumber = input.nextDouble();
System.out.println("Enter student grade: ");
double studentGrade = input.nextDouble();
x = x - 1;
}
}
}
我正在寻找一种方法让程序为我创建一个新变量,将每个新用户输入的学生成绩存储在 while 循环中。 例如) studentGrade1, studentGrade2, studentGrade3 ...
使用列表怎么样。
List<Student> students = new ArrayList<>()
并在 while 循环中
创建学生更新其字段然后将其添加到列表
Student myNewStudent = new Student();
// update fields
students.add(myNewStudent);
要迭代列表,您可以使用 for 循环。
for (Student s : students) {
// Get student info
}
将其调整到您的代码中:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ClassMarks {
// Create an inner class Student
public static class Student {
public double studentNumber;
public double studentGrade;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter number of students in class: ");
int students = input.nextInt();
int x = students;
// Create a list to hold your students
List<Student> studentsList = new ArrayList<>();
while (x > 0) {
Student myNewStudent = new Student();
System.out.println("Enter student number: ");
myNewStudent.studentNumber = input.nextDouble();
System.out.println("Enter student grade: ");
myNewStudent.studentGrade = input.nextDouble();
// update fields
studentsList.add(myNewStudent);
x = x - 1;
}
// Loop your student List
for (Student s : studentsList) {
// Get student info
System.out.println("Student number is: "+s.studentNumber+" grade is : "+s.studentGrade);
}
}
}
在while
循环之前,创建变量highest/lowest grades
double highestGrade = Double.MIN_VALUE, lowestGrade = Double.MAX_VALUE;
double gradeSum = 0;
然后当你遍历这些值时,适当地调整变量,例如
if (studentGrade > highestGrade)
highestGrade = studentGrade;
if (studentGrade < lowestGrade)
lowestGrade = studentGrade;
gradeSum += studentGrade;
然后在循环结束后,像这样得到平均值
double averageGrade = gradeSum / students;