我想創建一個程序,允許用戶使用指定的工資號刪除員工。訪問和修改數組列表的問題
該程序應具有如下功能:
程序顯示在ArrayList中目前的工作人員詢問用戶他們想要刪除工資號的輸入之前。然後用戶輸入三名工作人員中的一名工作人員的工資號並按下回車鍵。按下回車後,程序應該從陣列列表中刪除特定的工作人員並再次顯示整個列表(錯過顯然已經刪除的工作人員)。如果他們不希望刪除任何工資單號碼,工資單號碼應爲0
,然後應再次顯示該清單的內容。
我有以下的文件和結構:
---編輯---:ArrayListTest.java
import java.util.*;
import personnelPackage.Personnel;
public class ArrayListTest
{
static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args)
{
long searchQuery;
ArrayList<Personnel> staffList = new ArrayList<Personnel>();
Personnel[] staff =
{new Personnel(123456,"Smith","John"),
new Personnel(234567,"Jones","Sally Ann"),
new Personnel(999999,"Black","James Paul")};
for (Personnel person:staff)
staffList.add(person);
do
{
showDisplay(staffList);
System.out.print("\nPlease enter a payroll number to search: ");
searchQuery = keyboard.nextLong();
searchForPayrollNumber(staffList, searchQuery);
}while(!(searchQuery == 0));
}
private static void showDisplay(ArrayList<Personnel> staffList)
{
System.out.print("\n------------- CURRENT STAFF LIST -------------\n");
for (Personnel person : staffList)
{
System.out.println("Payroll number: " + person.getPayNum());
System.out.println("Surname: " + person.getSurname());
System.out.println("First name(s): " + person.getFirstNames() + "\n");
}
}
public static void searchForPayrollNumber(ArrayList<Personnel> staffList, long searchQuery)
{
long index = staffList.indexOf(searchQuery);;
for (Personnel person: staffList)
{
if (person.getPayNum() == searchQuery)
{
System.out.print("\n------------- Staff member found and removed! -------------");
System.out.println("\n\nFirst Name(s): " + person.getFirstNames());
System.out.println("\nSurname: " + person.getSurname());
System.out.print("\n-----------------------------------------------");
staffList.remove(index);
return;
}
}
System.out.print("\n------------- No staff members found. Program terminated -------------");
return;
}
}
Personnel.java(在其自己的包命名爲personnelPackage
)
package personnelPackage;
public class Personnel
{
private long payrollNum;
private String surname;
private String firstNames;
public Personnel(long payrollNum, String surname, String firstNames)
{
this.payrollNum = payrollNum;
this.surname = surname;
this.firstNames = firstNames;
}
public long getPayNum()
{
return payrollNum;
}
public String getSurname()
{
return surname;
}
public String getFirstNames()
{
return firstNames;
}
public void setSurname(String newName)
{
surname = newName;
}
}
我的程序在分鐘只識別第一個員工memb呃,如果我輸入工資號碼。任何其他工作人員不會被「發現」。我在哪裏錯了?如何從數組中刪除特定的工資覈算編號並要求用戶輸入另一個(直到數組爲「空」)。
showDisplay的輸出? –