我正在为一个低级java类工作。我已经完成了它,但我仍然坚持如何使用ArrayList。有两个类,第二个类(PizzaMaker)是客户端。我需要在第一个类中初始化一个ArrayList,然后通过客户端的用户输入向它添加三个项目。我知道如何初始化ArrayList,但是我在向列表中添加项目时遇到了问题。当我运行我现在的代码时,它返回空括号[]或null。
我没想到有人会为我做我的作业,但是对于我在这个代码中出错的地方的线索会有所帮助。
import java.util.*;
public class Pizza {
private String brand;
private int size;
private ArrayList<String> toppings = new ArrayList<String>();
public Pizza(String brand, int size) {
this.brand = brand;
this.size = size;
}
public void changeBrand(String brandName) {
brand = brandName;
}
public void changeSize(int pizzaSize) {
size = pizzaSize;
}
public void addTopping(String topping) {
toppings.add("topping");
}
public String getPizzaInfo() {
String result = "You want a "+ size +" inch pizza made by: "+ brand +" with these
toppings:" + toppings;
return result;
}
}
public class PizzaMaker {
public static void main( String[] args) {
int size = -1;
String brand = "";
String topping = "";
brand = getBrand();
size = getSize();
topping = getTopping();
Pizza newPizza = new Pizza(brand, size);
System.out.println(newPizza.getPizzaInfo());
}
public static String getBrand() {
Scanner kb = new Scanner(System.in);
System.out.println("Enter a brand name: ");
String brandName = kb.nextLine();
return brandName;
}
public static int getSize() {
Scanner kb = new Scanner(System.in);
System.out.println("Enter a size: ");
int pizzaSize = kb.nextInt();
kb.nextLine();
return pizzaSize;
}
public static String getTopping() {
Scanner kb = new Scanner(System.in);
System.out.println("Enter topping: ");
String topping = kb.nextLine();
return topping;
}
public static boolean getAgain() {
return true;
}
}
答案 0 :(得分:1)
你需要调用addTopping。例如,newPizza.addTopping(顶部)。另外,更正addTopping方法。用toppings.add(topping)替换toppings.add(“topping”);
我相信你需要付出更多努力来学习Java:)
答案 1 :(得分:0)
你从未在比萨饼上添加任何配料,
Pizza newPizza = new Pizza(brand, size);
// Keep adding toppings, check for empty string to end?
while ((topping = getTopping()).length() > 0) {
newPizza.addTopping(topping); // <-- add the topping to the pizza.
}
System.out.println(newPizza.getPizzaInfo());
您还需要修复方法addTopping
public void addTopping(String topping) {
// toppings.add("topping");
toppings.add(topping);
}
答案 2 :(得分:0)
正如你特别要求我们不要让你为你做功课(这很好:) :)我只会告诉你你需要做的线索和伪代码:
现在你只是在Pizza
中创建PizzaMaker
对象,但你没有做任何事情。您已经在PizzaMaker
方法getTopping()
中创建了检索顶部的方法。您还可以使用Pizza
addTopping()
中的披萨添加浇头的方法。现在您只需要调用PizzaMaker
中的方法,这样就可以使用它们。
psuedocode应该是这样的:
getTopping()
Pizza
方法将该顶部添加到addTopping()
对象。答案 3 :(得分:0)
看起来您希望能够向用户询问多个浇头。因此,作为第一个近似,我们假设主题只是单个单词,用逗号分隔(使用您设置的扫描仪很容易测试)。我建议您对源代码进行两处更改:
首先,将toppings的ArrayList更改为toppingList
private ArrayList<String> toppingList = new ArrayList<String>();
接下来,更改addToppings(String toppings)
以将用户输入的元组分解为标记(由空格分隔):
public void addToppings(String toppings) {
// Let's assume the user enters all toppings as single words delimited
// / by space
StringTokenizer strtok = new StringTokenizer(toppings);
while (strtok.hasMoreTokens()) {
String topping = strtok.nextToken();
toppingList.add(topping);
}
}
最后,您需要从主程序中调用addToppings
方法:
public static void main(String[] args) {
int size = -1;
String brand = "";
String topping = "";
brand = getBrand();
size = getSize();
topping = getTopping();
Pizza newPizza = new Pizza(brand, size);
newPizza.addToppings(topping);
System.out.println(newPizza.getPizzaInfo());
}
最后一点:确保关闭扫描仪实例,否则您将遇到资源泄漏。这个简单的程序没问题,但是如果它运行很久,就会出现内存泄漏。
为了加强您的计划,您可以尝试:
getTopping()
方法,一次一个地询问浇头,直到用户按下某个特殊键(“q to quit”总是很好)。玩得开心!
答案 4 :(得分:0)
第一个错误是你没有调用你在Pizza Class中定义的方法。 您只是通过构造函数传递并初始化类变量并显示这些变量,但您没有通过构造函数传递tropping值。
以下这些方法你没有在任何地方打电话。
/*public void changeBrand(String brandName) {
brand = brandName;
}
public void changeSize(int pizzaSize) {
size = pizzaSize;
}*/
只需使用以下代码: -
public static void main( String[] args) {
int size = -1;
String brand = "";
String topping = "";
brand = getBrand();
size = getSize();
topping = getTopping();
Pizza newPizza = new Pizza(brand, size);
newPizza.addTopping(topping);
System.out.println(newPizza.getPizzaInfo());
}
输出: -
Enter a brand name:
Manoj
Enter a size:
20
Enter topping:
pizaset 1
You want a 20 inch pizza made by: Manoj with these toppings:[pizaset 1]
希望它会对你有所帮助。 我现在正在测试。