gpt4 book ai didi

java - 具有多个 ArrayList 的基本 Java 编程

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:58 26 4
gpt4 key购买 nike

在下面的代码中,我获取了一个包含 5 个学生姓名的列表,并将它们加载到一个 String 类型的 ArrayList 中。

import java.util.Scanner;
import java.util.ArrayList;
public class QuizAverage
{
public static void main( String[] args ) {
final int NAMELIMIT = 5 ;
final int QUIZLIMIT = 5 ;
ArrayList<String> sNames = new ArrayList<String>();
ArrayList<String> sFamily = new ArrayList<String>();
Scanner in = new Scanner(System.in);
//Load the 5 names of the students in the arraylist
for(int i = 1; i<=NAMELIMIT; i++)
{
String[] input = in.nextLine().split("\\s+");

sNames.add(input[0]);
sFamily.add(input[1]);
}
System.out.println("Name: ");
System.out.println();
for(int i=0; i<NAMELIMIT; i++)
{
System.out.println("Name: " +sNames.get(i) + " " + sFamily.get(i));
}
System.out.println();
}
}

但是,现在我想在代码中添加一个部分,该部分读取每个学生 5 次测验的分数,并将测验分数加载到 Integer 类型的 ArrayList 中

所以我知道我需要使用

ArrayList<Integer> quizMarks = readArrayList(readQuiz.nextLine());

然后将其传递给此代码,该代码获取测验分数并将它们从 15 而不是 100 中加权

public static ArrayList<Integer> readArrayList(String input)
{
ArrayList<Integer> quiz = new ArrayList<Integer>();

int i = 1;
while (i <= QUIZLIMIT)
{
if (readQuiz.hasNextInt()) {
quiz.add(readQuiz.nextInt());
i++;
} else {
readQuiz.next(); // toss the next read token
}
}
return quiz;
}
//Computer the average of quiz marks
public static void computerAverage(ArrayList<Integer>quiz)
{
double total = 0 ;
for(Integer value : quiz)
{
total = total + value;
}
total *= MAX_SCORE/100;
System.out.println("Quiz Avg: "+ total / QUIZLIMIT );
}
}

所以我当前的输入代码:

Sally Mae 90 80 45 60 75
Charlotte Tea 60 75 80 90 70
Oliver Cats 55 65 76 90 80
Milo Peet 90 95 85 75 80
Gavin Brown 45 65 75 55 80

给出输出

Name: Sally Mae
Name: Charlotte Tea
Name: Oliver Cats
Name: Milo Peet
Name: Gavin Brown

当期望的输出是

Name: Sally Mae Quiz Avg: 10.5
Name: Charlotte Tea Quiz Avg: 11.25
Name: Oliver Cats Quiz Avg: 10.95
Name: Milo Peet Quiz Avg: 12.75
Name: Gavin Brown Quiz Avg: 9.6

最佳答案

正如 Jim 所说,您应该将分数和学生姓名存储在同一个类(class)中。这样做的原因是假设您想要查找名为 Raj 的特定学生的分数。

在您的实现中,您必须遍历第一个数组以找到名为 Raj 的人的索引,然后转到标记数组中的相同索引。如果在初始化第一个数组时没有问题,但在创建标记数组时出现问题,您可能会得到错误的标记。

此外,如果您必须向学生添加新属性,则必须创建一个新数组,然后再添加一个逻辑来读取该数据。

有了一个类(class),您就可以轻松地对属于某个学生的所有数据进行分组。

对于你的平均问题,我有一个类如下

class Student {
private String name;
private Double marks;

public Student(String name, String marks) {
this.name = name;
this.marks = marks;
}

//getters setters
}

有一个学生名单

List<Student> students = new ArrayList<Student>();

阅读后您会将对象附加到此列表

students.add(new Student(name, marks));

计算平均值如下

Double average = 0;
for(Student student: students) {
average += student.getMarks();
}
average = average / student.size();

结帐 https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html其他获取平均值的方法。

关于java - 具有多个 ArrayList 的基本 Java 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38406326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com