2013-04-29 54 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