2013-03-11 1 views
1

Я пытаюсь вывести некоторые данные из объекта в консоль. Кажется, работает, но ниже данных я получаю странное сообщение.Вывод данных из объекта (JAVA)

Ниже приведен код:

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 
[email protected] 

Что такое сообщение круг?

ответ

1

Дайте вашему классу класс достойный toString() метод переопределения. Вы видите возврат из версии объекта по умолчанию этого метода.

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

Я не знаю, что это означает или где добавить этот бит кода? Я не так далеко в этой главе. Не накрыл @override еще –

+0

@blnr: Он войдет в класс Circle. Вызывается System.out.println следующим образом: 'System.out.println (myObject);', на самом деле вызывает это: 'System.out.println (myObject.toString());'. И для того, чтобы это имело смысл, класс объекта должен переопределять метод по умолчанию, удерживаемый классом Object (это то, что вы видите). –

1

У вас должен быть System.out где-то еще, у которого есть объект Circle в качестве вывода. Тогда ответ на Hovercraft Full Of Eels применим.

Btw: Math.PI уже дает вам Pi!