我正在上java的第一门课,由于某种原因,我的教授本周给了我3章的新材料和要求的家庭作业。这是我第一次被介绍到ArrayList和类。我通常想花时间阅读这些东西,但我没有时间由于家庭作业/测验(我已经做了大约300谷歌搜索),所以无论如何这里是我的问题。
如何创建一个私有的arraylist,它包含的值可以通过scanner输入,而scanner都在它自己的类中?这是一个杂货店列表程序,我试图让用户输入的项目及其值的列表。这本身很容易,但是添加带有私有arraylists的类使其变得困难。通常我会这么做。。。
Scanner console = new Scanner(System.in);
ArrayList<String> groceryList = new ArrayList<>();
groceryList.add(console.next());
但是由于需要将arraylist私有化并将其放在自己的类中,这使得它变得更加棘手。这是我到目前为止,但我已经尝试了30种不同的东西,但我只打算粘贴我的尝试之一。
public class YourGroceryList {
Scanner console = new Scanner(System.in);
private ArrayList<YourGroceryList> groceryList = new ArrayList<YourGroceryList>();
groceryList.add(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;
}
}
1条答案
按热度按时间ktecyv1j1#
那部分很好。这些是字段声明:它们通过声明名称来声明字段(例如
console
),类型(例如Scanner
),以及一个所谓的初始化表达式(new Scanner(System.in)
); 这些字段的初始值被设置为这些表达式,如果您从不更改这些字段,它们将保持不变。这里不允许这样。a型(
class YourGroceryList
)只能包含内部类型(这里不需要)、字段和方法。因此,这是不允许的。你必须把它放在一个方法里:如果你想在创建一个新列表时运行它,把它放到构造函数中(通常是个坏主意;构造函数应该初始化基础,并且没有任何副作用,但是如果需要,可以):