简单的ArrayList程序-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(); } } 但是,这会给你带来另一个问题,那就是你要将标记与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(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |