我有2个arraylists,我想将项目从itemsList移动到pawnItemsList。
public static List<Items> pawnItemsList = new ArrayList<>();
public static List<Items> itemsList = new ArrayList<>();
public static String[][] itemsAttributes = new String[][]
{
{"Color TV ", "113", },
{"Microwave ", "322",},
{"Computer ", "1564",},
{"Stereo ","402"}
public static void main(String[] args)
{
/* rentOffice rent = new rentOffice();
employmentOffice emplyment = new employmentOffice();
budget budget = new budget();
factory factory = new factory();
*/
Scanner in = new Scanner(System.in);
int choice;
System.out.println("\n-------- PAWN SHOP --------\n");
System.out.println("1. Pawn");
System.out.println("2. Buy");
System.out.println("3. Exit");
choice = in.nextInt();
in.nextLine();
if(choice == 1)
{
pawnItems();
}
if(choice == 2)
{
addItems();
printItemsList();
buyItems();
}
}
我有一个名为buyItems的方法,我可以购买物品,然后我买的物品必须添加到pawnItemsList并从itemsList中删除。
public static void buyItems()
{
Scanner in = new Scanner(System.in);
if(itemsList.size()>0)
{
System.out.println("\nWhich item do you want to buy?(type the index)\n");
int choice = in.nextInt() - 1;
in.nextLine();
itemsList.remove(choice);
pawnItemsList.add(itemsList.get(choice));
System.out.println("-----------------------");
printItemsList();
System.out.println("-----------------------");
printPawnItemsList();
buyItems();
}
}
我的问题是:当我想购买彩色电视时(该项目的索引为0但输入必须为1,因为我把int choice = in.nextInt() - 1;),彩色电视从itemsList但在pawnItemsList中添加了Microwave。我尝试把pawnItemsList.add(itemsList.get(choice - 1));但它不起作用。
答案 0 :(得分:0)
在buyItems
方法中,您首先删除用户选择的项目。
itemsList.remove(choice);
此后,ArrayList
的状态发生变化。它的数组中的元素是重新排序的,最初在choice + 1
索引的元素(除非你删除了最后一项)现在是choice
索引。
要解决此问题,您需要首先获取它,或者您可以使用事实remove
方法返回已删除的对象,因此您可以写:
Items item = itemsList.remove(choice);
pawnItemsList.add(item);