新手来了!问题来了。我想创建一个单独的类,用于在ArrayList中定制食物的方法,另外一个单独的类用于打印ArrayList中创建的食物,我想在Main方法中调用它们。这是我在"食物"中写的东西。类:
import java.util.ArrayList;
public class Foods {
ArrayList<String> foods = new ArrayList<String>();
public void addFood(String input) {
foods.add(input);
}
public void setFood(int number, String input) {
foods.set(number, input);
}
public void removeFood(int numebr) {
foods.remove(numebr);
}
public void clearFood() {
foods.clear();
}
public int sizeFood() {
return foods.size();
}
public String getFood(int i) {
return foods.get(i);
}
}
这里是"打印"类:
public class Print {
public void printFoods() {
Foods foods = new Foods();
for (int i=0; i<foods.sizeFood(); i++)
System.out.println(foods.getFood(i));
}
}
和Main:
public class Main {
public static void main(String[] args) {
Foods foods = new Foods();
Print print = new Print();
foods.addFood("Beer");
foods.addFood("Tequila");
print.printFoods();
}
}
,结果为Blank!
所以在我的理解中,我举了两个"食物"的例子。类,一个在Main类中,另一个在Print类中,这就是为什么当我调用Print方法时,我得到空白结果。所以我试着把"打印"类的静态,所以它可能会看到在主要类的食品类的初始化,因此我可以删除在打印类中创建的食品类的实例。但由于将打印类转换为静态是不允许的,我卡住了!
如果你们能提出解决这个问题的建议,我将非常感激。有一件事要提一下,把print方法移到Main类中是不可能的,因为我真的想让不同的函数保持有序,并与Main类分开。由于
核心问题是Print
类有自己的Foods
实例,所以无论你在Main
中定义的实例中添加什么都没关系。我认为您在Print
类中实现的行为应该移动到Foods
类。
public class Foods {
... the other stuff ...
public void printFoods() {
for (String food : foods) {
System.out.println(food);
}
}
}
然后用法变成…
public class Main {
public static void main(String[] args) {
Foods foods = new Foods();
foods.addFood("Beer");
foods.addFood("Tequila");
foods.printFoods();
}
}
问题是您正在创建一个新对象。试试这个:
public class Print {
public void printFoods(Foods foods) {
for (int i=0; i<foods.sizeFood(); i++)
System.out.println(foods.getFood(i));
}
}
和
public class Main {
public static void main(String[] args) {
Foods foods = new Foods();
Print print = new Print();
foods.addFood("Beer");
foods.addFood("Tequila");
print.printFoods(foods);
}
}
这里的问题是,您总是打印一个新的列表,而不是外部创建的列表。正如@luk2302在评论部分所说,将外部创建的列表提供给printFoods()方法,并从方法内部删除Foods foods = new Foods();
。
举例:print.printFoods(foods);
public void printFoods(Foods foods) {
// Foods foods = new Foods(); // remove it
for (int i=0; i<foods.sizeFood(); i++)
System.out.println(foods.getFood(i));
}
Foods
在您的Print
类中与Foods
在主方法中不同。
正如@luk2302所建议的,您可以像这样向printFoods
方法添加一个参数:
public class Print {
public void printFoods(Foods foods) {
for (int i=0; i<foods.sizeFood(); i++)
System.out.println(foods.getFood(i));
}
}
并以foods
作为参数调用printFoods
:
public class Main {
public static void main(String[] args) {
Foods foods = new Foods();
Print print = new Print();
foods.addFood("Beer");
foods.addFood("Tequila");
// Pass the foods object in printFoods method
print.printFoods(foods);
}
}