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;
    }
}
相关推荐
努力写代码的熊大1 分钟前
stack、queue与priority_queue的用法解析与模拟实现
java·前端·javascript
遥远_36 分钟前
电商履约大促峰值应对:核心业务数据预热方案详解
java·spring·1024程序员节·电商大促·数据预热
lemon_sjdk1 小时前
每天学习一个新注解——@SafeVarargs
java
RoboWizard1 小时前
电脑效能跃升利器 金士顿KVR内存焕新机
java·spring·智能手机·电脑·金士顿
微露清风1 小时前
系统性学习C++-第七讲-string类
java·c++·学习
spencer_tseng2 小时前
JDK 9 List.of(...)
java·windows·list·1024程序员节
不平衡的叉叉树2 小时前
mybatis-plus的insertBatchSomeColumn方法实现批量插入
java·mybatis
学IT的周星星2 小时前
Maven 项目和 Maven Web 项目的异同点
java·maven
摇滚侠2 小时前
Spring Boot3零基础教程,函数式 Web 新特性,笔记51
java·spring boot·笔记
mustfeng2 小时前
VCS & Verdi 2023安装
java·服务器·前端