如何添加或删除数组中的内容?

时间:2014-03-23 18:43:54

标签: java arrays

我正在编写这个程序,它将从用户那里获取5个不同人的姓名,年龄和工资,并将它们放在一个数组中。

然后我想写一个方法,询问用户另一个名字,年龄和薪水,并将其添加到数组中。也是一种方法,该方法将用于已经在数组中的某个人的姓名,并将从该数组中删除具有该年龄的人的信息。

第一种方法会将数组大小增加1,第二种方法会将数组大小减少1.到目前为止,这就是我所拥有的:

ArrayList<details> details = new ArrayList<details>();

for(int x = 0; x < 4; x++) {

        Scanner scan = new Scanner(System.in);

        System.out.println("Enter the first name: ");
        String firstName = scan.nextLine();

        System.out.println("Enter the last name: ");
        String lastName = scan.nextLine();

        System.out.println("Enter the age: ");
        int age = scan.nextInt();

        System.out.println("Enter the salary: ");
        double salary = scan.nextDouble();

details.add (new details(firstName, lastName, age, salary));

}

我不知道该怎么做。我需要一些帮助! 谢谢!

3 个答案:

答案 0 :(得分:1)

您可以拥有一个具有所需类变量的类Person(名称,年龄,薪水)

class Person {
    private int age;
    private dobule salary;
    private String firstname;
    private String lastname;
}

为每个类变量定义getter和setter方法。例如

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

在你的主课程中,你正在阅读STDIN的输入。为5个人中的每一个实例化Person对象。

Person employee = new Person();
employee.setAge(x);
employee.setFirstName(x);
employee.setLastName(y);
employee.setSalary(y);

现在,您可以add将每个人列入您的列表,也可以remove

要删除任何Person,您必须通过ArrayList按名称搜索Person。这将迭代ArrayList的长度并比较每个的名称。

最后一堂课看起来像,

public class Solution{

   private ArrayList<Person> details = new ArrayList()<Person>; 

   public static void main(){
       // Here you loop for reading from STDIN as you are already doing.
       // addPerson() would be used to add to ArrayList and removePerson() for the other
   }
   public addPerson(String firstName, String lastName, int age, int salary){
        //Create the Person object
       details.add(<person object>);
   }
   public removePerson(name){
       details.remove(index);
       // to get index it would require iterating over the ArrayList. 
       // It would be better if you use a Map instead (as other suggest) 
       // with name as the key 
   }
}

希望这有帮助。

答案 1 :(得分:0)

dud首先,我可以看到你使用了arrayList name&amp;类名相同,请更新。

二次使用地图代替类,如条件

  if(){
  Map userDetails = new HashMap();
 map.put("firstname",firstname);
 ..
 ..
 map.put("salary",scan.nextDouble());
 details.add(map)
 }

并按时删除迭代ArrayList

 for(int i=0;i<details.size();i++){
    Map tempMap = details.get(i);
    if(temp.get("firstname").toString() == "Given Name"){
    }else{
       // your logic
    }
 }

希望会帮助你,如果有任何疑问,请告诉我。

答案 2 :(得分:0)

使用此代码删除员工

void removeEmployee(String name){
    for(Employee emp :details){
        if(name.equals(emp.getName())){
            details.remove(emp);
            break;
        }

    }
}

并且包含异常处理