在 Java 中组合数组

2023-12-26

在下面的代码中,我需要读取五个学生姓名的列表以及每个学生五个测验的分数,这会将姓名加载到 String 类型的 ArrayList 中,并将测验分数加载到 Integer 类型的 ArrayList 中。我已经通过两个不同的 ArrayList 分解了这个问题,我希望将它们结合起来,但不确定。

以下代码读取五个学生姓名并将这些姓名加载到 String 类型的 ArrayList 中

import java.util.ArrayList;
public class QuizAveragee
{
    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 five 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]);
        }
        for(int i=0; i<NAMELIMIT; i++)
        {
            System.out.println("Name: " + sNames.get(i) + " " + sFamily.get(i));
        }
        System.out.println();
    }
}

输入以下内容:

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

然后,我需要编写程序的一部分,为每个学生读取五个测验,并将测验标记加载到整数类型的 ArrayList 中。这是我为这部分生成的。

import java.util.ArrayList;
import java.util.Scanner;
public class heya
{
    public static final int QUIZLIMIT = 5;
    public static Scanner readQuiz;

    public static void main(String[] args)
    {
        readQuiz = new Scanner(System.in);

        while (readQuiz.hasNextLine()) {
            ArrayList<Integer> quizMarks = readArrayList(readQuiz.nextLine());
            computerAverage(quizMarks);
        }
    }

    // Load quiz marks
    public static ArrayList<Integer> readArrayList(String input)
    {
        ArrayList<Integer> quiz = new ArrayList<Integer>();
        Scanner readQuiz = new Scanner(input);
        int i = 1;
        while (i <= QUIZLIMIT)
        {
            if (readQuiz.hasNextInt()) {
                quiz.add(readQuiz.nextInt());
                i++;
            }
            else {
                readQuiz.next(); // Toss the next read token
            }
        }
        return quiz;
    }

    // Compute the average of quiz marks
    public static void computerAverage(ArrayList<Integer>quiz)
    {
        int total = 0 ;
        for(Integer value : quiz)
        {
            total = total + value;
        }
        System.out.println("Quiz Avg: "+ (total/QUIZLIMIT));
    }
}

给出输出:

Quiz Avg: 70
Quiz Avg: 75
Quiz Avg: 73
Quiz Avg: 85
Quiz Avg: 64

但是,我需要结合这些程序,但我不太确定该怎么做。给定的输入:

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 Quiz Avg: 70
Name: Charlotte Tea Quiz Avg: 75
Name: Oliver Cats Quiz Avg: 73
Name: Milo Peet Quiz Avg: 85
Name: Gavin Brown Quiz Avg: 64

这可以通过一个循环更简单地完成,假设您知道数据将采用正确的形式(名字和姓氏后跟 5 个等级),并且不需要存储名称或等级以供以后使用。

public class QuizAveragee {
  private static final int NAMELIMIT = 5;

  public static void main(String[] args) {
    //these lines are not needed but OP asked for the values to be stored in arrays
    ArrayList<String> names = new ArrayList<>();
    ArrayList<Double> averages = new ArrayList<>();
    Scanner in = new Scanner(System.in);

    for (int i = 0; i < NAMELIMIT; i++) {
        String line = in.nextLine();
        String[] words = line.split(" ");
        String name = words[0] + " " + words[1];
        double average = findAverage(words[2], words[3], words[4], words[5], words[6]);
        System.out.println("Name : " + name + " Quiz Avg: " + average);

        //these lines are not needed but OP asked for the values to be stored in arrays
        names.add(name);
        averages.add(average);
    }
  }

  private static double findAverage(String a, String b, String c, String d, String e) {
    double sum = Double.parseDouble(a) + Double.parseDouble(b) + Double.parseDouble(c) + Double.parseDouble(d) + Double.parseDouble(e);
    return (sum / NAMELIMIT);
  }
}

如果您确实需要存储这些值供以后使用,我建议利用 Java 是一种面向对象的语言这一事实​​并声明一个Student可以保存学生的姓名和成绩的对象。你可以这样做:

public class Student {
  private ArrayList<Integer> grades;
  private String fName;
  private String lName;

  public Student(String inputLine) {
    grades = new ArrayList<>();
    String[] lineSplit = inputLine.split(" ");
    fName = lineSplit[0];
    lName = lineSplit[1];
    for (int i = 2; i < lineSplit.length; i++) {
      grades.add(Integer.parseInt(lineSplit[i]));
    }
  }

  private double computeAvg() {
    double sum = 0;
    for (Integer grade : grades) {
      sum = sum + grade;
    }
    return sum / grades.count();
  }

  @Override
  public String toString() {
    return "Name: " + fName + " " + lName + " Quiz Avg: " + computeAvg();
  }
}

private static final int NAMELIMIT = 5;

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    for (int i = 0; i < NAMELIMIT; i++) {
        String line = in.nextLine();
        Student s = new Student(line);
        System.out.println(s);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中组合数组 的相关文章

  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • 使用 SciPy 最小化估计逆 Hessian 矩阵

    我正在使用 SciPy 的 最小化 函数来最小化函数 该函数返回最优值以及估计的雅可比矩阵和海森矩阵 如下 fun 675 09792378630596 hess inv lt 8x8 LbfgsInvHessProduct with dt
  • Jackson 为具有多态类型的一个字段定制反序列化器

    Update 我尝试在杰克逊源代码中进行调试并在方法中发现 deserialize JsonParser jp DeserializationContext ctxt of SettableBeanProperty java 当 的时候 v
  • 将带有回调的函数变成 Python 生成器?

    Scipy 最小化函数 仅用作示例 可以选择在每个步骤添加回调函数 所以我可以做类似的事情 def my callback x print x scipy optimize fmin func x0 callback my callback
  • Hibernate JPA:即使根本没有更改,更新查询(仅更新版本)也会被触发

    假设 我们有一个 User 一个用户可以有多个子级 现在 当我插入一个孩子时 我打电话user addChild 这样位于 JVM 中的用户对象就会被更新 尽管实际上用户的数据库记录没有任何变化 因为它是 OneToMany 当我检查SQL
  • 为什么用gcc和std=c99编译时找不到getaddrinfo

    我有以下我试图编译的代码 当我尝试使用 std c99 时 它失败并出现有关 struct addrinfo 类型的隐式声明 和 函数 getaddrinfo 的隐式声明 的警告 它适用于 std gnu99 include
  • 熊猫绘图,正值一种颜色,负值另一种颜色

    我有一个 pandas 数据框 在其中绘制 12 列中的两列 一列作为 x 轴 一列作为 y 轴 x 轴只是一个时间序列 y 轴的值是大约 5000 到 5000 之间的随机整数 有没有办法只使用这两列来制作散点图 其中 y 的正值是某种颜
  • 删除虚假逗号

    一位白痴客户正在生成 csv 文件 但其中一个字段 描述字段 有时有多余的逗号 是否有一个整洁的正则表达式来查找这些不良记录并用其他内容替换多余的逗号 SED 命令行就可以了 Example A B C This is a descript
  • 如何在 puppeteer 中获取所有 xhr 调用?

    我在用puppeteer加载网页 const browser await puppeteer launch headless true const page await browser newPage await page setReque
  • Jpa 事务 javax.persistence.RollbackException:事务标记为 rollbackOnly

    我有一个应用程序通过 jpa 对各种数据库表进行大量写入 这些写入之一可能会导致乐观锁异常 如果抛出一个 也没什么大不了的 我希望提交事务的其余部分 我通过以下方式查看了 Spring 事务的无回滚功能
  • Redis 中高效的索引类型操作

    我正在尝试在 Redis 中创建一组索引 用于执行 AND 操作 像这样 inx 头发颜色 金发 set key1 key2 key3 inx 眼睛颜色 蓝色 设置 key1 key2 我可以使用sinter找到所有金发蓝眼睛的钥匙 我有这
  • RSA_private_加密总是失败

    我正在学习在我的程序中使用 OpenSSL 库 在代码中 我生成一个私钥 并立即使用该密钥加密消息 但总是失败 请帮助我 private key RSA generate key RSA KEY LENGTH RSA 3 NULL NULL
  • 如何更改 SwitchCompat 的轨道颜色

    我尝试使用以下链接来更改 SwitchCompat 的颜色 如何更改 SwitchCompat 的颜色 https stackoverflow com questions 26714864 how to change the color o
  • 如果不存在图像则显示默认图像

    我在 Centos 5 上运行 Apache 我想实现重写规则 当用户尝试访问文件夹中的图像时 var site com html image products 该规则应该检查图像是否存在 如果不存在 我想要 var site com ht
  • 如何为 WinForms 应用程序创建 MSIX 包?

    我正在尝试转移到 MSIX 来安装我们的应用程序 该应用程序目前通过 ClickOnce 安装部署给我们的客户 如果有更新 则需要在启动时进行更新 它是一个 Net Framework 4 7 2 WinForms 应用程序 我有点不知道如
  • 如何使用 Kaminari (或 will_paginate)gem 对数组的哈希值进行分页

    我现在已经设法找到解决方法 现在 索引操作在调用页面之前有一个 订单 子句 然后按日期对餐食进行排序和分组 接下来是 hackey 位 total pages 和 pages 在视图中用于提供分页链接 因为内置帮助器不适用于 meals 返
  • 拥有“(a -> b) -> b”是否等同于拥有“a”?

    在纯函数式语言中 您可以对值执行的唯一操作就是对其应用函数 换句话说 如果你想用 type 的值做任何有趣的事情a你需要一个具有类型的函数 例如 f a gt b然后应用它 如果有人递给你 flip apply a与类型 a gt b gt
  • 使用鼠标从视频上的矩形设置 ROI

    我有视频 当程序运行时 视频的第一帧被视为图像 并且允许用户在图像上绘制矩形 绘制矩形后 用户必须右键单击图像来确认矩形 当鼠标右键单击时 图像消失 视频开始播放 并在其上绘制矩形 我能够完美地绘制矩形 但无法将该矩形设置为 ROI 我想要
  • 如何使用 boto3 将文件上传到 Amazon Glacier Deep Archive

    我已成功将文件上传到 Glacier 但我想直接上传到 Deep Archive 我搜索了文档 但没有发现如何设置存储类别DEEP ARCHIVE直接地 您可以使用put object 其中有一个StorageClass参数 或者你可以使用
  • 为什么iOS SDK和iOS操作系统版本会互相影响?或者:什么是 iOS SDK?

    EDIT 下面 H2CO3 的答案让我几乎高兴 但事实并非如此 解释一件事 为什么在构建时会出现运行时异常 针对 SDK6 的应用程序 UIPageViewController 需要一个子控制器 在将其添加到父控制器之前 但在构建时则不然
  • 在 Java 中组合数组

    在下面的代码中 我需要读取五个学生姓名的列表以及每个学生五个测验的分数 这会将姓名加载到 String 类型的 ArrayList 中 并将测验分数加载到 Integer 类型的 ArrayList 中 我已经通过两个不同的 ArrayLi