这题怎么做啊,新手求解答

图片说明

10年员工还是5年员工就是看卡号了,你可以吧卡号设为private String id 这样用substring方法截取前四位再转换为Integer和2017一比就出来了。

package test;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
private String empid;
private String name;
private int age;
private double salary;

public String getEmpid() {
    return empid;
}

public void setEmpid(String empid) {
    this.empid = empid;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public double getSalary() {
    return salary;
}

public void setSalary(double salary) {
    this.salary = salary;
}


public Employee(String empid, String name, int age, double salary) {
    this.empid = empid;
    this.name = name;
    this.age = age;
    this.salary = salary;
}

public static void main(String[] args) {
    Employee emp_1=new Employee("-20150601001", "张三", 22, 1200d);
    Employee emp_2=new Employee("-20010101001", "李四", 35, 13500d);
    Employee emp_3=new Employee("-20040106006", "王五", 28, 9000d);
    Employee emp_4=new Employee("-20020204011", "赵六", 30, 12000d);
    Employee emp_5=new Employee("-20080204111", "刘一", 27, 6200d);
    List<Employee> list=new ArrayList<Employee>();
    list.add(emp_1);
    list.add(emp_2);
    list.add(emp_3);
    list.add(emp_4);
    list.add(emp_5);
    int year = new GregorianCalendar().getWeekYear();//当前年
    for (int i = 0,len=list.size(); i < len; i++) {
        Integer empYear=Integer.parseInt(list.get(i).getEmpid().substring(1, 5));
        if(year-10>=empYear)
            System.out.println(list.get(i).getName()+"是10年以上老员工,奖励10块钱");
        if(year-5>=empYear&& empYear>year-10)
            System.out.println(list.get(i).getName()+"是5年以上10年以下老员工,奖励5块钱");
    }
}

}

最上面还缺个导包语句:

 import java.util.ArrayList;

有不清楚的地方欢迎随时提问~~~

 class Worker{
    String num;//卡号
    String name;//姓名
    int age;//年龄
    int salary;//工资
    //构造方法

    public Worker(String num, String name, int age, int salary) {
        this.num = num;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    //获取每个人的工龄
    public int getYear(){
        String  str = this.num.substring(0,4);//截取第0位到第3位的字符串
        int n = Integer.parseInt(str);
        int m = 2017 - n;
        return m;
    }
}
public class WorkerTest {
    public static void main(String[] args) {
        ArrayList<Worker> list = new ArrayList<Worker>();
        ArrayList<Worker> fiveList = new ArrayList<Worker>();
        ArrayList<Worker> tenList = new ArrayList<Worker>();

        Worker worker1 = new Worker("20150601001","张三",22,1200);
        Worker worker2 = new Worker("20010101001","李四",35,13500);
        Worker worker3 = new Worker("20040106006","王五",38,9000);
        Worker worker4 = new Worker("20020204011","赵六",30,12000);
        Worker worker5 = new Worker("20080204111","刘一",27,6200);

        list.add(worker1);
        list.add(worker2);
        list.add(worker3);
        list.add(worker4);
        list.add(worker5);

        for(int i = 0; i < list.size(); i++){
            if(list.get(i).getYear() >= 10){
                tenList.add(list.get(i));
            }else if(list.get(i).getYear() >= 5 && list.get(i).getYear() < 10){
                fiveList.add(list.get(i));
            }
        }
        System.out.println("五年工龄的是:");
        for(int i = 0; i < fiveList.size(); i++){
            System.out.print(fiveList.get(i).name + "   ");
        }
        System.out.println();
        System.out.println("十年工龄的是:");
        for(int i = 0; i < tenList.size(); i++){
            System.out.println(tenList.get(i).name + "  ");
        }

    }
}

一个map集合能解决的事情