【问题标题】:Create an array list in java and store values tied to an employee name在 java 中创建一个数组列表并存储与员工姓名相关的值
【发布时间】:2016-04-30 17:17:11
【问题描述】:

我有一个程序可以根据基本工资和佣金销售额计算员工的年薪。我想让程序更进一步,创建一个 arrayList 来询问员工姓名,然后创建一个数组,存储程序中的值并打印出每个输入的员工姓名的值。

我想我需要创建一个 for 或 else 循环来收集数据。问题是我不确定在哪里做以及如何创建数组。我有两个班级:

我的佣金变量和计算的 1 类:

package Commissions;

public class Calculations {

    double totalSales;
    private double comRate = 0.025;
    private double annualSal = 80000;
    private double salesTarget = 120000;
    private double acceleration = 0.015;
    private double compensation;

    public Calculations (double TotalSales) {
        this.totalSales = totalSales;

    }

    public double getCommissionCalc () {

        if (totalSales >= salesTarget) {

            compensation = (annualSal + (totalSales * (comRate + acceleration)));
                return compensation;

        } else if (totalSales >= salesTarget * .8) {

            compensation = (annualSal + (totalSales * comRate));
                return compensation;

        } else {

            compensation = annualSal;
                return compensation;
        }
    }

}

我的主要和用户输入的 1 个类

package Commissions;

import java.text.NumberFormat;
import java.util.*;

public class paycheck {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner input = new Scanner (System.in);

        NumberFormat nf = NumberFormat.getCurrencyInstance();

        System.out.println("Enter the employee name: ");
        long empName = input.nextLong();

        mediaArray[empName];

        System.out.println("Enter your total sales for the year:  ");
        double totalSales = input.nextDouble();

        System.out.println("\r");

        Calculations c = new Calculations (totalSales);

        System.out.println("Your Total compensation with your annual sales is:  " + nf.format(c.getCommissionCalc()));

        System.out.println("\r");

        System.out.println("If you were to increase your sales you could earn even more money!");

        System.out.println("\r");

        double i = totalSales + 5000;
        double finish = totalSales * 1.5;

        while (i <= finish) {

            c.totalSales = i;

            System.out.println("If you were to increase your sales commission to " + nf.format(i) + " you could earn: " + nf.format(c.getCommissionCalc()));

            i = i + 5000;
        }

    }

}

【问题讨论】:

  • 你需要有一个while循环让用户不断输入值。
  • 示例如下,使用当前代码:输入您当年的总销售额:120000 您的年销售额总薪酬为:80,000.00 美元,如果您将销售佣金增加到 125,000.00 美元,您可以获得: 85,000.00 美元,如果您将销售佣金增加到 130,000.00 美元,您可以获得:85,200.00 美元
  • 我希望它做的是添加以下内容: 请输入员工姓名:大卫,大卫请输入您的总销售额:120000,您的年薪......(然后它完成现有的while循环),我需要添加第二个while循环,询问:有多少员工有佣金销售?然后重复循环多次。我只是在学习循环和数组,所以我不确定如何在使用现有循环的同时构建新的 while 循环。

标签: java arraylist


【解决方案1】:

这是根据我对您的问题的理解的代码,在您说输入名称时必须更正一些事情,但输入时间很长:

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

public class Paycheck {

    public static void main(String[] args) {

        List<Employee> empList = new ArrayList<Employee>();

        while (true) {
            Scanner input = new Scanner(System.in);
            NumberFormat nf = NumberFormat.getCurrencyInstance();
            System.out.println("Enter the employee name (enter exit to exit): ");
            String empName = input.nextLine();
            // mediaArray[empName];

            if(empName.equals("exit")) {
                break;
            }

            System.out.println("Enter your total sales for the year:  ");
            double totalSales = input.nextDouble();

            Calculations c = new Calculations(totalSales);

            System.out
                    .println("Your Total compensation with your annual sales is:  "
                            + nf.format(c.getCommissionCalc()));

            System.out.println("\r");

            System.out
                    .println("If you were to increase your sales you could earn even more money!");

            System.out.println("\r");
            double i = totalSales + 5000;
            double finish = totalSales * 1.5;

            while (i <= finish) {

                c.totalSales = i;

                System.out
                        .println("If you were to increase your sales commission to "
                                + nf.format(i)
                                + " you could earn: "
                                + nf.format(c.getCommissionCalc()));

                i = i + 5000;
            }
            System.out.println("\r");

            //store employee data into arraylist
            empList.add(new Employee(empName, i));
        }


        for(Employee emp : empList) {
            System.out.println("Employee Name: " + emp.getName() + " Total Sales: " + emp.getSales());
        }
    }
}

class Employee {

    private String name;
    private Double sales;

    public Employee(String empName, double totalSales) {
        this.name = empName;
        this.sales = totalSales;
    }

    public Double getSales() {
        return sales;
    }

    public void setSales(Double sales) {
        this.sales = sales;
    }

    public String getName() {
        return name;
    }

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

【讨论】:

  • 现在说得通了,我可以看到我错过了什么。我的一个问题是我现在正在尝试比较数组中的员工并找出谁的销售额最高。我写了这段代码,但它不喜欢变量类型,因为: 这一行有多个标记 - Employee 类型中的方法 getSales() 不适用于参数 (int) 这是我的代码也比较值,if( emp.getSales(1)
猜你喜欢
  • 2022-12-17
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多