将值从方法返回到另一个方法

时间:2015-03-19 21:03:53

标签: java

有人可以告诉我为什么返回的值是3而不是8. return x方法中的addFive语句不会更改xmain的值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;
    }
}

8 个答案:

答案 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)  

希望它会有所帮助 非常感谢。