【问题标题】:How can I show all objects on java如何在java上显示所有对象
【发布时间】:2018-07-12 14:45:37
【问题描述】:

Item.java

我有一个带有变量名称和重量的项目

package com.company;

public class Item {
    String name;
    Double weight;
}

包.java

这个包最多可以容纳 20 公斤的物品。

package com.company;

public class Bag {
    Item [] myBags;
    int itemCount;
    Double currentWeight;

    Bag(){
        itemCount = 0;
        currentWeight = 0.0;
        myBags = new Item[50];
    }
    boolean canAddItem(Item item) {
            if (currentWeight + item.weight > 20) {
                return false;
            } else {
                return true;
            }
        }

    void AddItem(Item item){
        myBags[itemCount] = item;
        currentWeight = currentWeight + myBags[itemCount].weight;
        itemCount++;
    }
}

Main.java

package com.company;

public class Main {

    public static void main(String[] args) {
    // write your code here

        Bag myBag = new Bag();

        /*item 1*/
        Item fishing_rod = new Item();
        fishing_rod.name = "rod1";
        fishing_rod.weight = 10.4;

        if(myBag.canAddItem(fishing_rod)){
        myBag.AddItem(fishing_rod);}



        /*item 2*/
        Item axe = new Item();
        axe.name = "axe1";
        axe.weight = 2.2;

        if(myBag.canAddItem(axe)){
            myBag.AddItem(axe);}


        System.out.println(myBag.currentWeight);
        //System.out.println(myBag.myBags); i want to show that's here

    }
}

我在包中添加了两个对象。我想显示我在包中添加的所有对象。

如何显示?如何在 java 中显示?

感谢您的帮助

【问题讨论】:

  • 您可能需要在您的Item 类中添加一个print 函数,该函数只打印name 字段。然后遍历你包里的所有物品,调用你这样定义的函数。
  • @Rexam 是的,你是对的。 "System.out.println(myBag.myBags[0].name)" 我可以这样显示,但我想要显示所有项目的输出
  • 如果你想调用System.out.println(myBag)你应该覆盖ItemBagtoString()方法。另外看看这里:How to use the toString method in Java?

标签: java inheritance polymorphism


【解决方案1】:

你必须在你的类中重写toString() 方法: 对于 Item 类优先:

@Override
public String toString() {
    return "Name: "+ name + ": weight "+ weight +"Kg";
}

那么对于

@Override
public String toString() {
    return Arrays.toString(myBags);
}

这样每次打印你的包你都会得到里面的内容。

【讨论】:

  • 什么意思?看不懂
  • 确定已修复,请参阅我的编辑。顺便说一句,我建议你不要使用Item[],而是使用List<Item>
  • 感谢您的回答,但我不想要这个输出。我想要 item.nameitem.weight 输出
  • 您只需将方法 toString() 相应地更改为 Item 类。我已经完成了编辑,您可以在答案中看到它
  • 很高兴有帮助:)
【解决方案2】:

在包类中:

public void printBag() {
        for(int i =0; i< itemCount; i++) {
            System.out.println("Name: " + myBags[i].name);
            System.out.println("Weight: " + myBags[i].weight);
        }
    }

在主方法中: myBag.printBag();

【讨论】:

    【解决方案3】:

    在 Bag 类中定义一个函数:

    public void printBag() {
        for(Item element : myBags) {
           System.out.println('Name: ' + element.name);
           System.out.println('Weight: ' + element.weight);
        }
    }
    

    并从main 调用它:

    myBag.printBag();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2011-01-16
      相关资源
      最近更新 更多