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;
    }
}
相关推荐
无妄-202415 分钟前
“刹车思维”:慢,是为了更快
java·经验分享
玉~你还好吗17 分钟前
【FreeRTOS#1】多任务处理&任务调度器&任务状态
java·开发语言
Yusei_052318 分钟前
C++ 模版复习
android·java·c++
ytttr87319 分钟前
k8s的出现解决了java并发编程胡问题了
java·容器·kubernetes
纪元A梦39 分钟前
分布式拜占庭容错算法——权益证明(PoS)算法详解
java·分布式·算法
老友@41 分钟前
Spring Boot 应用中实现配置文件敏感信息加密解密方案
java·spring boot·后端·数据安全·加密·配置文件
纪元A梦44 分钟前
贪心算法应用:在线租赁问题详解
java·贪心算法
用户0595661192091 小时前
校招 Java 面试常见知识点解析及实战案例分享
java·面试
Bob99981 小时前
Logitech (罗技)单通道、双通道与6通道 Unifying 接收器:USB ID、功能与实用性解析
java·网络·c++·python·stm32·单片机·嵌入式硬件
海尔源码1 小时前
Java 的基础代码示例
java