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

使用多个数组列表的基本Java编程

骆磊
2023-03-14
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();
   }
}
ArrayList<Integer> quizMarks = readArrayList(readQuiz.nextLine());
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

共有1个答案

汤枫涟
2023-03-14

就像吉姆说的,你应该把标记和同班学生的名字存起来。这样做的原因是,比如说,往前走,你想找到一个叫Raj的学生的标记。

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

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

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以获得平均值的其他方法。

 类似资料:
  • 我有一个物品清单。每个对象都有一个级别属性(int 1、2或3)、一个城市属性(“New York”、“Milan”、“London”)和泛型字符串FamilyID。列表中对象的数量是随机的。我需要创建一个子列表(或任何其他集合/数据结构),它是由列表中的第一个对象组成的,具有级别和城市的任意组合(我不关心FamilyID)。 希望用一个例子让我的要求更清楚: 输出集合是具有(level,City

  • 我正在尝试将所有MySQL连接从旧的MySQL_查询切换到PDO。我试图使用不同的数组更新MySQL表的多个行和列,收到以下错误: [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取正确的语法,以便在第1行中使用接近(accnt、car、radio、misc)值('admin'、'300.00'、'400.00'、'10.00'),其中

  • 我想创建一个代码,帮助我将元素从“allWords”ArrayList复制到“差异词”。但他在不同单词ArrayList中的时间我希望一个单词只出现一个,消除“差异词”ArrayList中的冗余。 这是我想出的代码,我没有得到任何输出。 导入java。util。ArrayList; 公共类复制元素{ }

  • 问题内容: 我想要创建一个arraylist数组,如下所示: 但是它没有编译。我怎样才能做到这一点? 问题答案: 根据Oracle文档: “你不能创建参数化类型的数组” 相反,你可以执行以下操作: 正如汤姆·霍廷(Tom Hawting)的建议-定位线一样,最好这样做:

  • 问题内容: 我有两个数组: 为什么打完电话后我收到后,而我有像水木清华? 而且,打印后我也得到了。 我知道这等于chars.toString()方法,但是为什么有时System.out.print仅打印其元素? 问题答案: ,类型为,该方法有多个重载,其中一个重载包含一个字符数组(): 打印字符数组。这些字符将根据平台的默认字符编码转换为字节,并且这些字节将完全按照write(int)方法的方式写

  • 本文向大家介绍详解C++编程中数组的基本用法,包括了详解C++编程中数组的基本用法的使用技巧和注意事项,需要的朋友参考一下 可以使用数组下标操作符 ([ ]) 访问数组的各个元素。 如果在无下标表达式中使用一维数组,组名计算为指向该数组中的第一个元素的指针。 使用多维数组时,在表达式中使用各种组合。 在前面的代码中, multi 是类型 double 的一个三维数组。 p2multi 指针指向大小