日期:2014-05-20  浏览次数:20608 次

新手求助,谢谢各位大虾
class a
{
    int a=3;
    int x;
public int print(int d)
{
    x=4;
    d= a + x;
    System.out.println(d);
    return (d);
    }
}

class  b
{    
    public static void main(String[] args) 
    {
        a aa = new a();
        aa.print(1);
        System.out.println("Hello World!");
    }

}
问题是在aa.print(1);这里,我如果写成aa.print();就会有错误提示,但是它的结果已经是定的么,是7,写个2也是7,写个3 还是7,所以我就想问这个口号里写个整数的意义,或者可以写其他的什么的东东
还有个问题就是return (d);我的理解就是 当Jvm执行到return (d);时候它就会把d值返回到main函数中,还有就是我把return (d);换成了return (x);结果也没报错,我想问一下 这里return到底是怎么用的,return 返回了什么值,这个值是返回到哪里去的 谢谢各位了 希望高手们能给我解惑,不胜感激

------解决方案--------------------
写print()报错是因为这不是你写的函数,你掉了一个类里没有的函数,当然报错了, d= a + x; 这个把你传过去的数给修改了,(而你又返回了d)所以你不论传多少不同的数都是一个结果就是a+x的值
------解决方案--------------------
楼上正解,至于return,你并没有使用return回来的值。
你可以这么写看看
int r = aa.print(1);
System.out.println(r);
这个r就是返回值
------解决方案--------------------
你的print只是计算了a和x的和,并且赋给d而已,然后你就没操作了。
你写成print();是因为你这个函数需要传递一个Int值进去,而你没填,所以报错。在我个人看来你那个print传递的d一点意义都没有,因为你并没有使用他的初始值。return是谁调用就返回给谁。给你写个代码说一下

class A {
  private int a = 3;
  private int x;
  public int test(int d){
    //现在传入的d初始值在这个方法里没有用到,所以传递多少都是一样的。
    x = 4;//给x初始值
    d = x + a;//d=x+a
    System.out.println(d);//打印d的值永远都是7
    return d;//谁调用了test(int d)方法这个7就会返回给谁。
  }

  public int test1(int d){
    //这个方法里用到了d
    x = 4;//给x初始值
    d += x + a;
    System.out.println(d);//打印d的值是a+x+d,如果传入的d是1,那么这里的d就是8,2就是9...
    return d;//谁调用了test(int d)方法这个结果d就会给谁
  }

  public void main(String args){
    A aa = new A();
    int abc;
    abc = aa.test(1);
    System.out.println(abc); //结果是7
    abc = aa.test1(1);
    System.out.println(abc); //结果是8
    abc = aa.test1(10);
    System.out.println(abc); //结果是17
  }
}

------解决方案--------------------
return 返回的是什么类型要看你的方法声明返回的是什么类型!
你的方法是 public int print(int d) “int”表示你return的时候要返回一个int类型的值
可以是常量表达式或变量,
所以你return x 是合法的


aa.print(1) aa.print(2) aa.print(3) aa.print(4) 为什么都返回7?
因为传进去的参数没有参与运算,方法里面的“d”变量被“a+x”赋值为7
a是全局变量 3 x是局部变量4 你传进来的参数没有被使用
d所以等于7 然后return回来的是7