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;
    }
}
相关推荐
sxlishaobin1 分钟前
Java I/O 模型详解:BIO、NIO、AIO
java·开发语言·nio
彭于晏Yan8 分钟前
Spring AI(二):入门使用
java·spring boot·spring·ai
有一个好名字22 分钟前
vibe codeing 开发流程
java
兑生28 分钟前
【灵神题单·贪心】3745. 三元素表达式的最大值 | 排序贪心 | Java
java·开发语言
polaris063033 分钟前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
卓怡学长1 小时前
m280本科生导师指导平台
java·数据库·spring·tomcat·maven·intellij-idea
一直都在5721 小时前
Java死锁
java·开发语言
我真会写代码2 小时前
深度解析并发编程锁升级:从偏向锁到重量级锁,底层原理+面试考点全拆解
java·并发编程·
Meepo_haha2 小时前
创建Spring Initializr项目
java·后端·spring
会编程的土豆2 小时前
C++中的 lower_bound 和 upper_bound:一篇讲清楚
java·数据结构·算法