2017-11-09 6 views
0

私は2人のarraylistsを持っています。itemsListからpawnItemsListに項目を移動したいと思います。入力によってarraylistから別のものへ要素を移動する

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(); 
    } 
    } 

私が商品を購入すると、私が買ったアイテムがpawnItemsListに追加され、itemsListから除去されなければならないことを後にすることができますbuyItemsと呼ばれる方法があります。

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を持っているが、私はint型の選択= in.nextIntを(置くので、入力は1でなければなりません - 1;)購入したいときには、カラーテレビをitemsListから削除されますが、pawnItemsListにはMicrowaveが追加されます。私はpawnItemsList.add(itemsList.get(choice - 1));を入れようとします。それは動作しません。

+1

あなたは既にの項目を削除しましたアイテムリスト。その後、もう一度電話をかけることはできません。 'itemsList.remove(choice); pawnItemsList.add(itemsList.get(choice)); ' – BenSvK

+0

最初の一見で質問がはっきりしない場合は、最初に問題を説明し、後で説明を付けるといいでしょう。これは、ダウンボントの防止に役立ちます。 – Vlasec

+0

私の答えはあなたの問題を解決しましたか?あなたは質問をしましたが、答えをコメントしたり、まったく検証していないようですが、それは全く無頓着です。 – Vlasec

答えて

0

buyItemsの方法では、まずユーザーが選択したアイテムを削除します。

itemsList.remove(choice); 

この後、ArrayListの状態が変更されます。その配列内の要素は並べ替えられ、最初にchoice + 1のインデックスにある要素(最後の項目を削除しない限り)は、choice indexになりました。

問題を解決するには、まずそれを取得する必要があるか、あなたが書くことができるようにremove方法は、あなたに削除されたオブジェクトを返すという事実を使用することができます。

Items item = itemsList.remove(choice); 
pawnItemsList.add(item); 
関連する問題