将值从方法返回到另一个方法
有人可以告诉我为什么返回的值是3而不是8.来自addFive
方法的return x
语句是否会改变main
方法中x
的值?
public class App { public static void main(String[] args) { int x=3; addFive(x); System.out.println("x = " + x); } private static int addFive(int x) { x += 5; return x; } }
你想要x=addFive(x);
而不仅仅是addFive(x)
。 addFive(x)
调用addFive(x)
不会将返回值应用于任何变量。
您必须将返回值设置为变量,否则它将丢失,并且您正在main方法中检索“x”的值。 这样做是为了捕获返回值。
public static void main(String[] args) { int x=3; x = addFive(x); System.out.println("x = " + x); }
如果您只想查看返回的值而不存储它,您甚至可以将函数调用放在System.out.println
。
public static void main(String[] args) { int x=3; System.out.println("x = " + addFive(x)); }
像其他人一样,你需要分配你的回报价值。 因为你正在做“addFive(x)”而不是“x = addFive(x);” 你只是在main中打印“x”的实例,而不是获得函数返回的值。
这是因为main函数中的“x”是实例变量,addFive()中的“x”是局部变量。 即使它们具有相同的名称,它们也不是同一个变量。 这可能有点澄清 – http://www.tutorialspoint.com/java/java_variable_types.htm
当您在java中调用方法而没有为任何变量赋值时,更改将在方法调用中发生,之后该值将丢失并返回到您指定的值。 要查看结果你应该做那个System.out.println(addFive(x));
但如果要更改x
的值,则必须指定x = addFive(x);
您正在使用x
调用方法addFive(int x)
,但不将返回值分配给任何内容。 因此,在main()
的范围内x
仍然像以前一样,3 – 这就是正在打印的内容。 因此,您可以将返回的值存储到x
本身:
x = addFive(x);
或者在print语句中进行函数调用:
System.out.println("x = " + addFive(x));
该方法确实返回一个值,但是当你返回它时你必须将值设置为一个变量,否则它将如何知道你要将值返回到哪个变量? 您可以拥有10个变量,如果您只是调用该方法,它将如何知道将该数字返回哪个变量? 这就是为什么你必须将返回的数字设置为这样的变量:
x = addFive(x);
因为你根本就没有使用你的函数计算。 它不会改变x的值,它会返回新值。
你应该做的事情如下:
int y = addFive(x);
main函数中的值与addFive(int x )
函数中的值完全不同。 您将main从main发送到addFive(int x)
方法。
JVM制作x的副本并将其发送到addFive(int x)
方法。 然后x
在addFive(int x)
方法中更改。 但是main()
方法中的x
保持不变。
如果要从main方法获取addFive(int x)
返回的更改值,可以执行以下操作 –
int returnedValueFromAddFive = addFive(x)
希望它会有所帮助。
非常感谢。