java - 我想通过用户输入添加到 arrayList

标签 java oop arraylist java.util.scanner user-input

我一直在尝试创建一个小程序,提示用户输入员工姓名和薪水,将其添加到 arrayList,然后在屏幕上显示选项(例如 0:退出,1:添加,2:显示),读取输入,然后根据输入进行处理。显示只是(例如姓氏:Smith 薪水:14000 英镑。只需要一些帮助来指引我正确的方向。我目前有 3 个类(class) Employee、Employee List 和 Employee测试。

此类提示用户输入。

import java.util.Scanner;
public class Employee {

private String Last_Name;
private int Salary;

public Employee(){
    Scanner inputValues = new Scanner(System.in);

    System.out.print("Enter employee last name: ");
    Last_Name = inputValues.next();

    System.out.print("Enter Employee Salary: " + "£");
    Salary = inputValues.nextInt();
}

public void Display(){

    System.out.printf("Name: " + Last_Name + " " + "Salary: " + Salary);
    System.out.println("\n");
}
}

这个类应该将员工添加到数组列表中,但我不确定我是否正确地做了。

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

public class EmployeeList extends Employee{

private List <Employee> employee =  new ArrayList<Employee>();


 public EmployeeList(Employee person) {
     employee.add(person);
}

 public void DisplayEmployees(){
     System.out.println("Employee:"  + employee.size()); 
     displayList(employee);
 }

 public static void displayList(List employee) {

      } 
}

这里是main方法所在的地方

import java.util.Scanner;

public class EmployeeTest {


public static void main(String[] args) {

    Employee employee = new Employee();
    employee.Display();

    EmployeeList empList =  new EmployeeList(employee);
    empList.DisplayEmployees();

    Scanner scanner = new Scanner(System.in); 
    System.out.println("0: quit, 1: add, 2: display");
    String employees = scanner.next(); 

   /* if (employees.equals("1")){
     //not sure how to go back to displaying the user prompts

        break;
    } */

}

}

最佳答案

我能想到的几个小技巧:

  1. EmployeeList不应扩展 Employee . OOP 的主要规则是,如果 B 是一个 A,类 A 扩展类 B。这里显然不是这种情况 - employeeList 不是雇员,它是雇员列表(在我看来你不不需要为此上课,只需 List<Employee> )
  2. 我会将逻辑与数据分开。含义 - Employee类应该只保存员工的数据,而不是处理扫描和获取用户的输入。构造函数在我看来应该很简单,类似于:

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

    获取数据的逻辑应该在这个类之外,或者在EmployeeHandler中。或主要本身。由于您将它放在员工内部,因此当一些逻辑在员工中而另一些在主体中时,您将难以继续。

  3. 高级代码应该是这样的(我会把细节留给你):
    • 向用户显示菜单选项
    • 如果他想添加用户,获取两个变量的输入,创建员工对象并将其添加到列表中
    • 如果他想显示,遍历列表并打印(打印可以覆盖toString类中的Employee)
    • 如果他想退出,完成
    • 继续这个循环直到他想退出

关于java - 我想通过用户输入添加到 arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094243/

相关文章:

java - 获取 kafka-producer 中主题订阅者数量的选项

oop - 包含首字母缩写词的类的命名约定

没有属性样板的 Python 类

java - 无法解析方法添加 ArrayList

java - 从 Excel 读取数据以提供测试用例

java - 如何在selenium框架中的不同类之间传递相同的浏览器实例

java - REST最佳实践,用于检索元素的特定子集

java - Guava 事件总线 : don't catch RuntimeException

java - 代码重构。实现相同接口(interface)的类

java - 如何在 Android 的 ArrayList 中使用 indexOf()?