我正在尝试解决这个问题:
在模块1030Y中定义一个具有StudentID和标记属性的Student类。Student类还必须包含一个默认构造函数以及一个构造函数,以使用用户定义的值,每个属性的mutator和accessor方法以及一个显示方法来初始化Student类型的对象。编写一个维护学生对象ArrayList的测试程序(ID在701-799范围内,标记在0.0到100.0范围内)。该程序将允许用户输入学生编号和每个学生的分数。完成所有输入后,程序将显示最高和最低分数的学生ID。
由于某些原因,我试图获得学生最低和最高分数的部分无法正常工作。
这是我的代码:
Student.java:
package Number5;
public class Student {
private int studentID;
private float mark;
public Student()
{
studentID = 0;
mark = 0;
}
public Student(int id, float marks)
{
this.studentID = id;
this.mark = marks;
}
public void setID(int id)
{
this.studentID = id;
}
public int getID()
{
return studentID;
}
public void setMark(float marks)
{
this.mark = marks;
}
public float getMark()
{
return mark;
}
public void display()
{
System.out.println("Student ID: "+getID());
System.out.println("Marks: "+getMark());
}
}
testStudent.java:
package Number5;
import java.util.ArrayList;
import java.util.Scanner;
public class testStudent {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<Student>();
int id=0; float mark=0;
Scanner input = new Scanner(System.in);
do
{
System.out.print("Enter the student ID: ");
id = input.nextInt();
System.out.print("Enter the marks: ");
mark = input.nextFloat();
students.add(new Student(id,mark));
}
while(id != 0 || mark != 0);
int smallest = 9999, largest = -9999;
for(int i=0; i<students.size(); i++)
{
while(smallest > students.get(i).getMark())
{
smallest = students.get(i).getID();
}
while(largest < students.get(i).getMark())
{
largest = students.get(i).getID();
}
}
System.out.println("Smallest is "+smallest);
System.out.println("Largest is "+largest);
}
}
读取用户输入后,程序将立即停止。直到for循环才使用。
您的问题似乎是当您使用while语句检查时进入无限循环的事实。使用如下if
语句:
for(int i=0; i<students.size(); i++)
{
if(students.get(i).getMark() < smallest)
{
smallest = students.get(i).getID();
}
if(students.get(i).getMark() > largest)
{
largest = students.get(i).getID();
}
}
但是,这将给您带来另一个问题,因为您正在将和mark
进行比较id
。您需要检查的值mark
对mark
,然后分配id
。像这样:
int largestMark = 0;
inst smallestMark = 9999;
for(int i=0; i<students.size(); i++)
{
if(students.get(i).getMark() < smallestMark)
{
smallestMark = students.get(i).getMark();
smallest = students.get(i).getID();
}
if(students.get(i).getMark() > largestMark)
{
largestMark = students.get(i).getMark();
largest = students.get(i).getID();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句