2013-04-29 58 views
-1

我是面向對象編程的初學者,我想編寫簡單的代碼來使用對象將兩個數字相加。這是我的主要部分:使用類添加兩個數字

package main; 
public class Main { 
test sum = new test(); 
System.out.println("sum="+sum.c); 
} 

,這裏是我的課:

package main; 
public class test { 

public int c; 

public test() { 
    int a = 1; 
    int b = 1; 
    int c = a + b; 
} 

public int c() { 
    return c(); 
} 
} 

根據我的理解,它應該返回2,但它返回0。上午我做錯了什麼?謝謝。

回答

5

您在使用同名c的局部變量的方法中隱藏c屬性。只是刪除變量的聲明:

public test() { 
    int a = 1; 
    int b = 1; 
    c = a + b; 
} 

此外,在您的c()方法,你應該返回變量,而不是方法:

public int c() { 
    return c; 
} 
2

的一些問題:

  • 分配int c = a + b;但是您將重新聲明變量以使其隱藏實例變量(它仍然爲0),它應該是c = a + b
  • 功能c()是無用的,而危險的,因爲它會調用它的自我(無限遞歸:StackOverflowException
  • 類應該命名爲大寫(Testtest
+1

另外,軟件包通常位於作者的域名下方,正如'package com.example'而不是'package main'。 – 2013-04-29 02:05:00

1

試試這個:

public class Test { 

    int a = 1; 
    int b = 1; 
    int c = a + b; 

    public int getC() { 
     return c; 
    } 
} 

而這個:

public class Main { 
    public static void main(String[] args) { 
     Test sum = new Test(); 
     System.out.println("Sum = " + sum.getC()); 
    } 
} 

你的問題是你的整數是在一個方法中,這意味着他們只能用這種方法。同樣爲了打印整數,你必須調用它,就像你用()的方法調用方法一樣。

+0

這並不能解釋OP做錯了什麼。 SO不是givemetehcodz服務。 – 2013-04-29 02:37:04

+0

我現在已經解釋了他/她做錯了什麼。 – kzolp67 2013-04-29 08:45:46

+0

我是新來堆棧溢出,所以我仍然在學習 – kzolp67 2013-04-29 08:46:30