访问其他Java类

问题描述 投票:0回答:2

我是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;
}

类的项目看起来像这样:

    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)";
         }

    }
}
java arrays methods netbeans
2个回答
0
投票

第一个问题是代码和细节不完整。

第二个问题:假设if-condition为false,并且循环条件也为false(空数组),则程序将无法返回return语句,这就是为什么您必须添加额外的return语句的原因。

您可以在return内移动最后else block


0
投票

不知道发生了什么,但是当我稍后处理它时,错误消息突然消失了,我能够运行该程序。 NetBeans中是否有用于“刷新”的特殊键?

© www.soinside.com 2019 - 2024. All rights reserved.