2013-04-15 40 views
0

我對Java很陌生,似乎無法弄清楚爲什麼我的代碼無法正常工作。理論上,它應該打印出(0.0)和我插入課程的任何東西之間的距離。有人可以幫我嗎?Java中的構造方法問題

public class Homework61 { 
    double x; 
    double y; 

    Homework61(double q, double r) { 
     double x = q; 
     double y = r; 
    } 

    Homework61() { 
     x = 0.0; 
     y = 0.0; 
    } 

    public String toString() { 
     String a = "(" + x + "," + y + ")"; 
     return a; 
    } 

    public double distanceFromOrigin() 

    { 
     double z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); 
     return z; 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Homework61 p = new Homework61(); 
     System.out.println(p.toString() + " Is this far from origin: " 
       + p.distanceFromOrigin()); 
     p = new Homework61(3, 4); 
     p.x = 3; 
     p.y = 4; 
     System.out.println(p.toString() + " Is this far from origin: " 
       + p.distanceFromOrigin()); 
    } 
} 
+0

,你不需要重新定義它的類型(例如'double x = q;') – JCOC611

回答

3
Homework61(double q, double r) { 
    double x = q; 
    double y = r; 
} 

創建2局部變量x和y,則什麼也不做他們。 你大概的意思

Homework61(double q, double r) { 
    this.x = q; 
    this.y = r; 
} 

另外,你永遠只能打印遠方的你填充你的對象(x和y是始終爲0)前。

+0

這正是我需要的!謝謝約翰! – ACH

+0

我寧願'公共'構造函數,除非該類不打算被實例化。 –

1
double x; 
double y; 

Homework61(double q, double r) { 
     double x = q; 
     double y = r; 
    } 

在甚至可以通過您要創建x和y的局部變量,其壽命將退出在構造大括號結束相同的名稱有X和Y類變量,構造Homework61內再次與上述情況。

,如果你想接收的參數值在聲明x和y類變量初始化使用this指針。

this指針用於本地和類變量之間的區分,即it prevents the ambiguity between local variables and class variables

因此,你必須一旦你定義一個變量初始化它像

Homework61(double q, double r) { 
    this.x = q; 
    this.y = r; 
}