【问题标题】:Outputting data from within an object (JAVA)从对象内输出数据(JAVA)
【发布时间】:2025-12-08 20:55:01
【问题描述】:

我正在尝试将对象中的一些数据输出到控制台。似乎工作正常,但在数据下方我收到一条奇怪的消息。

下面是代码:

import java.text.DecimalFormat;

/**
 * The Circle class calculates area, diameter, and circumference 
 */

public class Circle {

    DecimalFormat fmt = new DecimalFormat("#0.00");

    // Fields
    private double radius;                  // Holds the circle radius
    private final double PI = 3.14159;      // The formula for PI


    /**
     *      Start Constructors
     */


    public Circle(double rad) {

        radius = rad;
        System.out.println("The circle's radius is " + (fmt.format(radius)));
        System.out.println("The circle's area is " + (fmt.format(PI * radius * radius)));
        System.out.println("The circle's diameter is " + (fmt.format(radius * 2)));
        System.out.println("The circle's circumference is " + (fmt.format(2 * PI * radius)));
    }


}

控制台输出为:

The circle's radius is 2.00
The circle's area is 12.57
The circle's diameter is 4.00
The circle's circumference is 12.57
Circle@5115a298

什么是圈子消息?

【问题讨论】:

    标签: java console output


    【解决方案1】:

    给你的 Circle 类一个不错的 toString() 方法覆盖。您将看到此方法的 Object 的默认版本的返回。

    @Override
    public String toString() {
       /*  return a String that shows the "state" of this object */
    }
    

    【讨论】:

    • 我不知道这意味着什么或在哪里添加这段代码?我在这一章里没那么远。尚未涵盖@override
    • @blnr:它将进入 Circle 类。像这样的 System.out.println 调用,System.out.println(myObject);,实际上是在调用它:System.out.println(myObject.toString());。为了使这一点有意义,对象的类必须覆盖 Object 类所拥有的默认方法(这就是您所看到的)。
    【解决方案2】:

    您必须在其他地方有一个 System.out,它只有一个 Circle 对象作为输出。然后 Hovercraft Full Of Eels 的答案适用。

    顺便说一句:Math.PI 已经给了你 Pi!

    【讨论】: