当前位置: 首页 > 知识库问答 >
问题:

在java中创建数组列表并存储与员工姓名绑定的值

丁韬
2023-03-14

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

我想我需要创建一个for或其他循环来收集数据。问题是我不知道在哪里做以及如何创建数组。我有两个类:

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;
        }

    }

}

共有1个答案

易镜
2023-03-14

这是根据我对你的问题的理解的代码,必须纠正一些事情,因为你说输入名称,但需要很长时间作为输入:

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;
    }
}
 类似资料:
  • 被遗忘的姓名列表 看了一些从来没接触过吉里吉里的朋友使用NVL写的游戏,发觉这个功能竟然很少有人使用。 很多人会一次次地使用类似 【姓名栏】 名字=XXX 颜色=XXX 这样的指令来输入对话人的名字和对应的颜色。 这样做有什么错误呢,其实完全没错,就是……写上几百个难道不觉得烦么……= = 其实NVL提供了简化功能,那就是姓名编辑。 只要设置一次名字和颜色,之后就可以直接从下拉菜单里选择这个名字,

  • 我有一个主类,一个DTO和一个DAO。我想做的是读取数据库表 CUSTOMER(两个字段名称,姓氏),然后将其写入 txt 文件。我似乎无法让它将值存储在 DTO 中,以便我的主类可以获取它。 我的DTO存在两个字段,名和姓,getters和setters。问题出在我的刀与列表上 *请记住我是一名学生。 这是我到目前为止所做的:结果,像这样写入文件:[姓名姓氏,姓名姓氏,]我需要它写入分隔的文件管

  • 我正在努力将名字数组和姓氏数组交替连接在一起。我的代码如下。 创建两个数组,可以存储一个人的名字(在第一个数组中)和姓氏(在第二个数组中)。要求用户输入任何人的任意5个名字,然后再次要求用户输入他们各自的姓氏。现在,通过连接名字和姓氏来打印全名。示例-假设包含名字和姓氏的数组如下所示: FirstNameArray={"Tom","John"} secondNameArray={“Holland”

  • 我的文本文件如下所示 我使用下面的代码片段将文本逐行存储在数组列表中,并将整个文件显示为输出。 但我只想显示三列TMAX,TMIN,DMAX。

  • 问题内容: 我想要创建一个arraylist数组,如下所示: 但是它没有编译。我怎样才能做到这一点? 问题答案: 根据Oracle文档: “你不能创建参数化类型的数组” 相反,你可以执行以下操作: 正如汤姆·霍廷(Tom Hawting)的建议-定位线一样,最好这样做:

  • 有没有一种方法可以将一组播放器存储在SQL数据库的一个列中? 我有一个events表,我想在表中名为的列下存储所有输入该事件的玩家。 进入者都将来自表。 我找到了set属性,但这看起来需要指定set可以包含的特定值。我现在知道这些,但在将来,表很可能会改变。 所以我想, 在表中添加一个列,名为,该列包含一组 该选项最初应为空,但当玩家进入该事件时,他们将被添加到集合中。 从Java方面来看,当我从