【发布时间】:2020-03-30 19:14:58
【问题描述】:
我是一名 Java 初学者,有两个问题让我很困惑,所以我有这些问题。
比如我不明白为什么在Class Suitcase中可以调用方法调用getWeight(),但是在Class Hold中方法调用totalWeight()不行。
在这里工作:
public int totalWeight() {
int momentaryWeight = 0;
for (Item items: this.itemList) {
momentaryWeight = momentaryWeight + items.getWeight();
}
return momentaryWeight;
}
但不在这里:
public String toString() {
int momentaryWeight = 0;
int index = 0;
for (int i = index; i < this.suitcaseList.size(); i++) {
Suitcase suitcaseChosen = this.suitcaseList.get(i);
int weightOfsuitcaseChosen = suitcaseChosen.totalWeight();
momentaryWeight += weightOfsuitcaseChosen;
}
此外,当有一个返回某些内容的方法并使用 if 语句(所以 2 个 return 语句)时,它会在之后询问我另一个 return 语句,如下所示:
public Item printGoods() {
if (this.itemList.isEmpty() == true) {
return null;
} else {
for (Item itemThis: this.itemList) {
return itemThis;
}
}
return null;
}
我知道这些问题可能很枯燥,但我想不出一个更好的论坛来理解它。 谢谢。
Hold 类:
public class Hold {
private int maxWeight;
private ArrayList<Suitcase> suitcaseList;
public Hold(int maxWeightGiven) {
this.maxWeight = maxWeightGiven;
this.suitcaseList = new ArrayList<>();
}
public void addSuitcase(Suitcase suitcase) {
this.suitcaseList.add(suitcase);
}
public String toString() {
int momentaryWeight = 0;
int index = 0;
for (int i = index; i < this.suitcaseList.size(); i++) {
Suitcase suitcaseChosen = this.suitcaseList.get(i);
int weightOfsuitcaseChosen = suitcaseChosen.totalWeight();
momentaryWeight += weightOfsuitcaseChosen;
}
return this.suitcaseList.size() + " suitcases" + " (" + momentaryWeight + " kg)";
}
手提箱类:
import java.util.ArrayList;
public class Suitcase {
private int maximumWeight;
private ArrayList<Item> itemList;
public Suitcase(int maximumWeightGiven) {
this.maximumWeight = maximumWeightGiven;
this.itemList = new ArrayList<>();
}
public void addItem(Item item) {
int momentaryWeight = 0;
if (momentaryWeight <= this.maximumWeight && momentaryWeight + item.getWeight() <= this.maximumWeight) {
this.itemList.add(item);
}
}
public int totalWeight() {
int momentaryWeight = 0;
for (Item items: this.itemList) {
momentaryWeight = momentaryWeight + items.getWeight();
}
return momentaryWeight;
}
Item 类如下所示:
public class Item {
private String name;
private int weight;
public Item(String nameGiven, int weightGiven) {
this.name = nameGiven;
this.weight = weightGiven;
}
public String getName() {
return this.name;
}
public int getWeight() {
return this.weight;
}
public String toString() {
return this.name + "( " + this.weight + " kg)";
}
}
}
【问题讨论】:
-
toString和totalWeight在哪些类中? -
如果你发minimal reproducible example,我相信我能回答你。
-
编程难,从教程开始:docs.oracle.com/javase/tutorial
-
关于您的第二个问题:如果您声明返回类型,所有可能的代码路径最终都必须返回该类型的内容。如果
itemList包含零项(所以return itemThis永远不会被执行),而isEmpty()返回false怎么办? (这是错误的,但它*可能是......) -
很抱歉,我无法发布整个代码,因为它太长了。我将发布屏幕图像。
标签: java arrays methods netbeans