新手求助,谢谢各位大虾
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