从学渣走向未来 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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。