Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在类中创建私有ArrayList?(爪哇)_Java_Class_Arraylist_Private - Fatal编程技术网

Java 如何在类中创建私有ArrayList?(爪哇)

Java 如何在类中创建私有ArrayList?(爪哇),java,class,arraylist,private,Java,Class,Arraylist,Private,我正在学习Java的第一门课程,出于某种原因,我的教授本周给了我3章的新材料和必要的家庭作业。这是我第一次被介绍到ArrayList和类。我通常想花时间阅读这些东西,但由于家庭作业/测验,我没有时间(我已经做了大约300次谷歌搜索),所以这里是我的问题 我如何创建一个私有的值数组列表,这些值可以通过扫描器输入,而扫描器都在它自己的类中?这是一个杂货清单程序,我试图列出用户输入的物品及其价值。这本身很容易,但添加带有私有ArrayList的类使其变得困难。通常我会这样做 Scanner c

我正在学习Java的第一门课程,出于某种原因,我的教授本周给了我3章的新材料和必要的家庭作业。这是我第一次被介绍到ArrayList和类。我通常想花时间阅读这些东西,但由于家庭作业/测验,我没有时间(我已经做了大约300次谷歌搜索),所以这里是我的问题

我如何创建一个私有的值数组列表,这些值可以通过扫描器输入,而扫描器都在它自己的类中?这是一个杂货清单程序,我试图列出用户输入的物品及其价值。这本身很容易,但添加带有私有ArrayList的类使其变得困难。通常我会这样做

    Scanner console = new Scanner(System.in);
    ArrayList<String> groceryList = new ArrayList<>();
    groceryList.add(console.next());
扫描仪控制台=新扫描仪(System.in);
ArrayList groceryList=新的ArrayList();
添加(console.next());
但是,由于需要将ArrayList设置为私有并将其放置在自己的类中,这使得它变得更加棘手。这是我到目前为止所做的,但我已经尝试了大约30种不同的东西,但我只打算粘贴我的一次尝试

    public class YourGroceryList {
        Scanner console = new Scanner(System.in);
        private ArrayList<YourGroceryList> groceryList = new ArrayList<YourGroceryList>();

        groceryList.add(console.next());
    }
公共类YourGroceryList{
扫描仪控制台=新扫描仪(System.in);
private ArrayList groceryList=new ArrayList();
添加(console.next());
}

好的,我现在已经更新了我的程序,它确实起作用了。让我知道下次我可以改进什么

public class test {
    private static final int maxListSize = 10;
    private static String Item = "";

    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        YourGroceryList list = new YourGroceryList();

        System.out.println("Type \"stop\" when you are done entering in your list");
        answer(console);

        System.out.println(YourGroceryList.getGroceryList());
        }

        public static void answer(Scanner console){
            for(int i=0; i<maxListSize; i++) {
                Item = console.next();
                if(Item.equals("stop")){
                    return;
                }
                YourGroceryList.setGroceryList(Item);
            }
        }

}

    class YourGroceryList {
        private static ArrayList<String> groceryList = new ArrayList();

        public static ArrayList<String> getGroceryList(){
            return groceryList;
        }

        public static ArrayList<String> setGroceryList(String Item){
            groceryList.add(Item);

            return groceryList;
        }
    }
公共类测试{
私有静态最终int maxListSize=10;
私有静态字符串项=”;
公共静态void main(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
YourGroceryList=新建YourGroceryList();
System.out.println(“输入完列表后键入\“停止\”);
回答(控制台);
System.out.println(YourGroceryList.getGroceryList());
}
公共静态无效应答(扫描仪控制台){
对于(int i=0;i
此处不允许这样做。类型(
class YourGroceryList
)只能包含内部类型(此处不需要这些)、字段和方法。因此,这是不允许的语句。您必须将其放在方法中:

public void doSomething() {
  groceryList.add(console.next());
}
如果希望在创建新列表时运行此命令,请将其放入构造函数中(通常这是个坏主意;构造函数应该初始化基础,并且没有副作用,但如果需要,可以):


ArrayList可能应该是
private ArrayList groceryList=new ArrayList()
如果这通常不是一个好主意,那么什么是好的替代方案?将您的代码放在一个方法中。这就是方法的用途。是的,我只是想知道如何首先让它工作。thx需要您的帮助,请告诉我我的工作版本是否有任何问题。
groceryList.add(console.next());
public void doSomething() {
  groceryList.add(console.next());
}
public YourGroceryList() {
  groceryList.add(console.next());
}