从学渣走向未来 2022-04-24 20:52 采纳率: 72.7%
浏览 59
已结题

一道java题,有关于ArrayList,不知道如何实现程序

题目要求和UML图

img


目标运行结果,输入和结果两条线不用写入代码。

img

还有就是用泛型类时需要用如下格式


private ArrayList<Worker> workers = new ArrayList<Worker>();

我的输出格式应该是对的,主要是不知道ArrayList怎么用和earings()如何实现计算工资总和。

我的错误代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; 

public class TestCompanyWorker {

    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);

        Worker worker1 = new Worker(scanner.next(), scanner.nextDouble());

        Worker worker2 = new Worker(scanner.next(), scanner.nextDouble());

        Worker worker3 = new Worker(scanner.next(), scanner.nextDouble());

        Company company = new Company();
        
        List<Worker> list = new ArrayList<Worker>();
        
        list.add(worker1);
        
        list.add(worker2);
        
        list.add(worker3);
        
        System.out.println("姓名\t\t" + "工资");

        System.out.println("-------------------------");

        System.out.println(company.toString());

         company.toString();

    }
}
class Worker{
    private String name;
    private double sal;
    public Worker(){
    }
    public Worker(String name,double sal){
        this.name=name;
        this.sal=sal;
    }
        public void setName(String name){
            this.name=name;
        }
        String getName(){
            return name;
        }
        public void setSal(double sal){
            this.sal=sal;
        }
        double getSal(){
            return sal;
        }
        public String toString(){
            return name+"\n"+sal+"\n";
        }
}
class Company<worker>{
    private String name;
    private ArrayList<worker> workers;
    private Worker woker;
    Company(){
    }
    Company(String name){
        this.name=name;
    }
    public void setName(String name){
        this.name=name;
    }
    String getName(){
        return name;
    }
    public void setWorkers(ArrayList<Worker> workers){
        this.workers=(ArrayList<worker>) workers;
    }
    ArrayList<Worker> getWorkers(){
        return (ArrayList<Worker>) workers;
    }
    public void addWoker(Worker woker){
        this.woker=woker;
    }
    public double earnings(){
        return ;
    }
    public String toString(){
        return "\n"+"工资合计 "+earnings();
    }
}
  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2022-04-24 21:26
    关注

    earning是company类中的一个计算工资的方法。
    company类中包含了多个员工信息,存储在List集合中。
    计算工资只需要遍历集合拿到每个员工对象,通过对象获取员工的工资求和。

    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner; 
     
    public class TestCompanyWorker {
     
        public static void main(String[] args){
     
            Scanner scanner = new Scanner(System.in);
     
            Worker worker1 = new Worker(scanner.next(), scanner.nextDouble());
     
            Worker worker2 = new Worker(scanner.next(), scanner.nextDouble());
     
            Worker worker3 = new Worker(scanner.next(), scanner.nextDouble());
     
            Company company = new Company();
            
            List<Worker> list = new ArrayList<Worker>();
            
            list.add(worker1);
            
            list.add(worker2);
            
            list.add(worker3);
            
            System.out.println("姓名\t\t" + "工资");
     
            System.out.println("-------------------------");
     
            System.out.println(company.toString());
     
             company.toString();
     
        }
    }
    class Worker{
        private String name;
        private double sal;
        public Worker(){
        }
        public Worker(String name,double sal){
            this.name=name;
            this.sal=sal;
        }
            public void setName(String name){
                this.name=name;
            }
            String getName(){
                return name;
            }
            public void setSal(double sal){
                this.sal=sal;
            }
            double getSal(){
                return sal;
            }
            public String toString(){
                return name+"\n"+sal+"\n";
            }
    }
    class Company<worker>{
        private String name;
        private ArrayList<worker> workers;
        private Worker woker;
        Company(){
        }
        Company(String name){
            this.name=name;
        }
        public void setName(String name){
            this.name=name;
        }
        String getName(){
            return name;
        }
        public void setWorkers(ArrayList<Worker> workers){
            this.workers=(ArrayList<worker>) workers;
        }
        ArrayList<Worker> getWorkers(){
            return (ArrayList<Worker>) workers;
        }
        public void addWoker(Worker woker){
            this.woker=woker;
        }
        public double earnings(){
           double sum=0.0;
           for(int i=0;i<workers.size();i++){
             sum+=workers.get(i).getSal();
            }
            return sum;
        }
        public String toString(){
            return "\n"+"工资合计 "+earnings();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗