这是一个家庭作业问题,所以我最好尽可能多地编写代码,只需要一个指针。
我有一个名为Sandwich
的类,它有一个设置主要成分的方法和其他一些东西 -
public class Sandwich {
private String mainIngredient, bread;
String getMainIngredient(){
return mainIngredient;
}
void setMainIngredient(String mainIng){
mainIngredient = mainIng;
}
void setBread(String dough){
bread = dough;
}
void setPrice(double cost){
price = cost;
}
现在在另一个班级TestSandwich
我初始化了一个数组,作为问题的一部分;
Sandwich[] sandwiches = new Sandwich[5];
现在我需要做的是循环并每次为mainIngredient和bread分配一个值。 我想我会想做一些事情,但我不确定如何正确地做。
for(int i = 0; i < 5; i++){
System.out.println("Insert a main ingredient");
String userInput = sc.next();
sandwiches[i].setBread(userInput);
System.out.println("Insert a bread");
userInput = sc.next();
sandwiches[i].setMainIngredient(userInput);
System.out.println(sandwiches[i].getMainIngredient());
System.out.println("");
}
主要问题是 - sandwiches[i].setMainIngredient(userInput);
我对数组和方法没有多少经验,所以任何有关正确语法的帮助都会很棒。
由于
答案 0 :(得分:3)
Sandwich[] sandwiches = new Sandwich[5];
创建一个包含5个null
引用的数组。
您需要自己初始化每个元素;在你的循环中写
sandwiches[i] = new Sandwich();
否则你会得到NullPointerException
。完成后,您可以像现在一样调用设置方法。继续前进,您可以声明一个两个参数构造函数,将面包和主要成分作为参数。这是更好的风格,因为(i)你避免了建立者和(ii)对象在建筑和使用之间处于不明确的状态。
答案 1 :(得分:0)
Sandwich[] sandwiches = new Sandwich[5];
这会分配一个数组来容纳5个三明治,但它不会创建任何三明治。只是数组。您正准备在循环中创建三明治。
当你编写这个循环时,而不是迭代到5,最好使用sandwiches.length
,这样如果你想要10个而不是5个三明治,你可以在一个地方改变数字而不是2.它会更安全,更不容易出错:
for (int i = 0; i < sandwiches.length; ++i) {
// TODO: get the ingredients from user
// ready to create the sandwich, yum yum
Sandwich sandwich = new Sandwich();
sandwich.setBread("...");
sandwich.setMainIngredient("...");
sandwiches[i] = sandwich;
}