当前位置: 首页 > 知识库问答 >
问题:

简单的ArrayList程序-Java

鲜于喜
2023-03-14

我正试图解决这个问题:

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());
}
}
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);
}
}

共有1个答案

欧阳俊逸
2023-03-14

您的问题似乎是在使用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();
        }
    }
 类似资料:
  • C++使用非程序员可能感到奇怪的符号。我们首先介绍一个简单程序:打印一行文本。程序及其屏输出如图1.2。 这段程序演示了C++语言的几个重要特性。我们详细介绍程序的每一行。 // Fig.1.2:fig1_02.cpp // A first program in C++ 以//开头,表示该选项其余部分是注释语句(comment)。程序员手稿注释语句用来说明和提高程序的可读性。注释语句还可以帮助其

  • 无错误,无编译,无运行时错误。嘿,我有一个关于Android sum的简单问题。我在做一个简单的求和,代码编译,它在技术上做它应该做的,求和直到它大于120。然而,我希望输出在循环中显示每个和。不幸的是,它只是立即跳到textview上的最后一个总和。我尝试使用一个睡眠函数,wait函数,但结果是它会等待所有循环的时间量,直到总和大于120,然后输出最终的总和。在本例中为4950。在文本视图中显示

  • 编译简单的 C 程序 C 语言经典的入门例子是 Hello World,下面是一示例代码: #include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; } 我们假定该代码存为文件‘hello.c’。要用 gcc 编译该文件,使用下面的命令: $ gcc -Wall hello.c -o hell

  • 我有HttpClient 4.1。请看看以下程序: 当我运行这个时,我得到了org。阿帕奇。http。客户ClientProtocolException。可能有什么问题?

  • 我知道甚至这个问题已经被提出了几次,但没有找到解决这个问题的方法。我使用的编译命令:。我使用的运行命令: 错误:

  • 本文向大家介绍SpringMVC程序简单实例,包括了SpringMVC程序简单实例的使用技巧和注意事项,需要的朋友参考一下 StringMVC程序简单实例 第一步:导入jar包 第二步,在WEB-INF文件夹下创建spring-servlet.xml文件。  第三步:在web.xml文件配置springmvc。  第四步:创建一个控制器。    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!