PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。

目录

1.问题描述

2.函数接口定义:

3.裁判测试程序样例:

4.输入和输出样例

输入样例:

输出样例:

5.实现代码


1.问题描述

Main类:在main方法中,调用constructWorkerList方法构建一个Worker对象链表,调用computeTotalSalary方法计算总工资并输出到屏幕。

根据要求,编写WorkerList类的构造方法和方法。编程要求如下:

  1. 数据使用Scanner对象从键盘读入;
  2. constructWorkerList方法:从键盘读入工人数量workerNum,调用readInWorker方法读入workerNum个工人,将每个工人对象添加到链表中,最后返回链表。
  3. readInWorker方法:使用scanner从键盘读入一个工人的姓名、年龄和工资,构建一个Worker对象并返回
  4. computeTotalSalary方法:计算链表中所有工人的工资总和并返回。

提示:

Scanner对象读入字符串的方法:

next()方法读入一个字符串,读到空白符结束;(本题中使用next()方法读入字符串)

nextLine()也是读入一个字符串,但读取到回车(也就是"\r")结束。

2.函数接口定义:

java 复制代码
Worker readInWorker();
List<Worker> constructWorkerList();
double computeTotalSalary(List<Worker> list);

3.裁判测试程序样例:

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {        
        WorkerList app=new WorkerList();                        
        List<Worker> list=app.constructWorkerList();        
        System.out.println(app.computeTotalSalary(list));    
    }
}

/* 请在这里填写答案:将WorkerList类补充在这里 */


class Worker {    
    private String name;
    private double salary;
    
    public Worker() { }
    
    public Worker(String name, double salary){
        this.name = name;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public double getSalary(){
        return salary;
    }
    
    public void setSalary(double salary){
        this.salary = salary;
    }

    public String toString() {
        return name + " "+salary;
    }    
}

4.输入和输出样例

输入样例:

在这里给出一组输入。例如:

复制代码
2
May 500
Bob 800

输出样例:

在这里给出相应的输出。例如:

复制代码
1300.0

5.实现代码

java 复制代码
class WorkerList {
    Worker readInWorker() {
        Scanner sc = new Scanner(System.in);
        Worker worker = new Worker();
        String str=sc.nextLine();
        String []ss=str.split("\\s+");
        if(ss.length==2){
            System.out.println(ss[1]);
            worker.setName(ss[0]);
            worker.setSalary(Double.parseDouble(ss[1]));
        }
        return worker;
    }

    List<Worker> constructWorkerList() {
        List<Worker> list = new ArrayList<Worker>();
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        for (int i = 0; i < count; i++) {
            Worker worker = new Worker();
            
                worker.setName(sc.next());
                worker.setSalary(sc.nextDouble());
                list.add(worker);
            
        }
        return list;
    }

    double computeTotalSalary(List<Worker> list) {
        if(list==null)
        {
            return 0.0;
        }
        double sum = 0.0;
        for (Worker w : list) {
            sum += w.getSalary();
        }
        return sum;
    }
}
相关推荐
Web Security Loop24 分钟前
MAC卸载JDK环境
java·macos·jdk
Rain的Java大神之路1 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
counting money2 小时前
Tomcat 专题:从基础架构到性能调优与 WebSocket 实战
java·websocket·tomcat
xiaohaiAIgeo2 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
小强库计算机毕业设计3 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质3 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军3 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐3 小时前
maven部分构建参数讲解
java·maven
ZC跨境爬虫3 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
kisbad4 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript