ItemArray.checklist.add()没有将字符串附加到ArrayList

时间:2017-10-20 12:08:55

标签: java arraylist

我已经学习了大约3天的java,但我似乎无法将数据附加到我的ArrayLists(清单)之一。尝试显示数组中的所有项时的输出始终为[]。帮助会得到极大的赞赏!

ShopAssist.java:

import java.io.*;
import java.util.Scanner;

    class ShopAssist {
        public static void main(String[] args){
            //Items itemchecklist = new Items();
            System.out.println("( Add | Remove | Show | Exit )");
            System.out.print(">");
            Scanner menuinput = new Scanner(System.in);
            String choice = menuinput.nextLine();
            if (choice.equals("Add")){
                AddItem();
            }

            else if (choice.equals("Remove")){
                RemoveItem();
            }
            else if (choice.equals("Show")){
                ShowItems();
            }

        while(true){
            main(null);
        }
        }

        public static void AddItem(){
            Items ItemArray = new Items();
            System.out.print("Add: ");
            Scanner addinput = new Scanner(System.in);
            String addchoice = addinput.nextLine();
            ItemArray.checklist.add(addchoice);
            System.out.println("Info: " + addchoice + " has been added to checklist!");
        }

        public static void RemoveItem(){
            System.out.println("RemoveItem Method");
        }

        public static void ShowItems(){
            Items ItemArray = new Items();
            System.out.println("ShowItems Method");
            System.out.println(ItemArray.checklist);
        }
    }

Items.java:

import java.util.ArrayList;
public class Items {
    ArrayList<String> checklist = new ArrayList<String>();

}

1 个答案:

答案 0 :(得分:7)

您创建了ItemArray的多个实例 AddItem()ShowItems()都有。 所以你永远不会在这些方法中使用相同的实例。

应该写一次:

 Items ItemArray = new Items();

并且是这些方法的传递参数或类的字段。

理想情况下,这应该是private实例字段,您应该将static方法更改为实例方法:

class ShopAssist {

    private Items items = new Items();
    ...

    public static void main(String[] args){

      ShopAssist shopAssist = new ShopAssist();

      while (true) {
        System.out.println("( Add | Remove | Show | Exit )");
        System.out.print(">");
        Scanner menuinput = new Scanner(System.in);
        String choice = menuinput.nextLine();

        if (choice.equals("Add")) {
          shopAssist.addItem();
        } 
        else if (choice.equals("Remove")) {
          shopAssist.removeItem();
        } 
        else if (choice.equals("Show")) {
          shopAssist.showItems();
        }
      }
    }

    public void addItem(){
        ...
    }
    ...
    public void showItems(){          
        System.out.println("ShowItems Method");
        System.out.println(items.checklist);
    }
    ...
}

在任何地方使用static都不是OOP。