2014-02-16 128 views
-1

我寫下面的程序來調用toString方法,但它不起作用。toString方法未調用。 java

import java.util.Scanner; 
public class findarea_class { 

    public static void main(String[] args) 
    { 
     findarea_class objtostring = new findarea_class(1.0,1.0); 
     objtostring.setelements(); 
    } 

    double width; 
    double height; 
    Scanner input = new Scanner(System.in); 

    findarea_class() 
    { 

    } 
    findarea_class(double width,double height) 
    { 
     this.width = width; 
     this.height = height; 

    } 
    public String toString() 
    { 
     return "width is: "+this.width+" and height is: "+this.height+"\n" 
       +"The area is : "+getarea(width,height)+"\n" 
       +"The perimeter is: "+getperimeter(width,height); 
    } 

    double getarea(double width,double length) 
    { 
     double area = width * length; 
     return area; 
    } 
    double getperimeter(double width,double length) 
    { 
     double perimeter = (2 * length) + (2 * width); 
     return perimeter; 
    } 
    double getwidth() 
    { 
     System.out.println("Please the width for calculation:"); 
     double inputwidth = input.nextDouble(); 
     System.out.println("Width is:"+inputwidth); 
     return inputwidth; 
    } 
    double getheight() 
    { 
     System.out.println("Please enter the height for calculation:"); 
     double inputheight = input.nextDouble(); 
     System.out.println("Height is:"+inputheight); 
     return inputheight; 
    } 
    void setelements() 
    { 
     double newwidth; 
     double newheight; 

     newwidth = getwidth(); 
     newheight = getheight(); 

     System.out.println("The new area is : "+getarea(newwidth,newheight)); 
     System.out.println("The new perimeter is `enter code here`: "+getperimeter(newwidth,newheight)); 
    } 
} 
+0

我的意思是它不調用toString()方法。其餘部分工作正常,但我想調用toString()方法來顯示defaule值width = 1.0和height = 1.0。 – user1528581

+3

我甚至在代碼中看不到一個* UpperCase *字母(把你被迫去的那些字母分開)。請遵循Java命名約定。 –

+4

你期望在什麼地方調用'toString()'? – Pshemo

回答

1

你沒有調用toString()。將它傳遞給任何可以顯示它的東西。用途:

System.out.println(objtostring.toString()); 
+0

謝謝Whoppa。它正在工作。 :) – user1528581

+0

它現在正在工作。缺少的是,我傳遞參數,但沒有顯示方法丟失。我得到了「Whoppa」的幫助,現在正在工作。 :) :) – user1528581

+0

很高興我能幫忙!如果我的答案是「最好的」,那麼選擇我的帖子附近的綠色複選標記,將其標記爲您的「最佳答案」。 – Whoppa

0

您試圖重寫Object類的toString方法。試試這個。

@Override  
public String toString() { 
     return "width is: "+this.width+" and height is: "+this.height+"\n" 
       +"The area is : "+getarea(width,height)+"\n" 
       +"The perimeter is: "+getperimeter(width,height); 
} 

並稱之爲objectName.toString();。在這種情況下,使用這樣的東西。 objtostring.toString();

1

你的主要方法應該打印對象,或者你可以把println調用放入你的構造函數中(儘管我不是那麼喜歡)。

public static void main(String[] args) 
{ 
    findarea_class objtostring = new findarea_class(1.0,1.0); 
    System.out.println(objtostring); 
    objtostring.setelements(); 
}