有人可以告诉我为什么返回的值是3而不是8. return x
方法中的addFive
语句不会更改x
中main
的值1}}方法?
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;
}
}
答案 0 :(得分:7)
您需要x=addFive(x);
而非addFive(x)
。在其上调用addFive(x)
不会将返回的值应用于任何变量。
答案 1 :(得分:4)
您必须将返回值设置为变量,否则它将丢失并且您正在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));
}
答案 2 :(得分:3)
与其他人一样,您需要指定返回值。因为你正在做" addFive(x)"代替" x = addFive(x);"你只是打印" x"的实例。在main中,并且永远不会获得函数返回的值。
这是因为" x"在你的main函数中是一个实例变量,你的" x"在addFive()中是一个局部变量。即使它们具有相同的名称,它们也不是同一个变量。 这可能会澄清一点 - http://www.tutorialspoint.com/java/java_variable_types.htm
答案 3 :(得分:2)
当您在java中调用方法并且不为任何变量分配时,更改将在方法调用中发生,之后该值将丢失并返回到您分配的值。要查看结果System.out.println(addFive(x));
,但如果要更改x
的值,则必须指定x = addFive(x);
答案 4 :(得分:1)
您正在使用addFive(int x)
调用方法x
,但不会将返回值分配给任何内容。因此,main()
的范围x
内部仍然像以前一样,3 - 这就是正在打印的内容。因此,您可以将返回的值存储到x
本身:
x = addFive(x);
或在print语句中进行函数调用:
System.out.println("x = " + addFive(x));
答案 5 :(得分:1)
该方法确实返回一个值,但是当你返回它时你也必须将值设置为变量,否则它将如何知道要将值返回到哪个变量?您可以拥有10个变量,如果您只是调用该方法,它将如何知道将该数字返回哪个变量?这就是为什么你必须将返回的数字设置为这样的变量的原因:
x = addFive(x);
答案 6 :(得分:0)
因为你根本就没有使用你的功能计算。它不会改变x的值,它会返回新值。
您应该执行以下操作:
int y = addFive(x);
答案 7 :(得分:0)
main函数中的值与addFive(int x )
函数中的值完全不同。您从主要x
方法发送addFive(int x)
。
JVM制作x的副本并将其发送到addFive(int x)
方法。然后x
方法中addFive(int x)
发生了变化。但x
方法中的main()
保持不变。
如果您想从main方法获取addFive(int x)
返回的更改值,您可以执行以下操作 -
int returnedValueFromAddFive = addFive(x)
希望它会有所帮助 非常感谢。