三个类,一个用于Main,一个用于ArrayList,另一个用于print.如何让它们协同工作? &g



新手来了!问题来了。我想创建一个单独的类,用于在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);

}
}

相关内容

最新更新