我正在编写这个程序,它将从用户那里获取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));
}
我不知道该怎么做。我需要一些帮助! 谢谢!
答案 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;
}
}
}
并且包含异常处理