如何在方法中为变量设置值并在main方法中将其打印出来?

时间:2012-11-23 08:25:11

标签: java variables methods

public class Shape 
{
    public static void main(String args[]){
        int num = 0;
        cng(num);
    }

    public static void cng(int x){
        x = 52;
        System.out.println(x);
    }

}

如您所见,在cng方法中,我将x的值设置为52,然后打印出x的值。

然后,回到main方法,对cng变量执行num方法。

然而,我想要做的是将值52设置为x而不使用System.out.println(x); 在我的cng方法中运行,并在我的main方法中打印出值。我该怎么做呢?

我试过

public static void cng(int x){
    x = 52;
}

然后

public static void main(String args[]){
    int num = 0;
    cng(num);
    System.out.println(num);
}

但它只打印出0 因为num设置为0.我认为在cng变量上执行num会将其更改为52,但事实并非如此。

5 个答案:

答案 0 :(得分:2)

让你的cng方法返回一个int变量

public static int cng(int num){    
num = 52; 
return num; 
}

在Main方法中,从cng()方法

中分配返回的变量
int num = 0;
 num =cng(num);
 System.out.println(num);

或者:

你总是可以将num作为成员静态变量

   static int num;

答案 1 :(得分:1)

您希望通过引用传递数据。对于Java中的原始值(int,double,boolean等),这是不可能的。

您有以下选择:

  • 让它成为班级成员
  • 创建一个包装器对象(对象引用也按值传递,可以更改函数中该对象的成员,而不是对象引用本身)
  • 返回函数中的值(如其他答案所述)

答案 2 :(得分:1)

尝试将代码更改为:

public class Shape 
{


public static void main(String args[]){
    int num = 0;
    num = cng(num);
    System.out.println(num);
}

public static int cng(int x){
    x = 52;
    return x;
}

}

答案 3 :(得分:1)

阅读评论:

public class Shape 
{

    public static void main(String args[]){
    int num = 0;
    num = cng();   //store value returned by cng() in num
    System.out.println("num : " +num); // display num
    }

    public static int cng(){    //change return type to int
    return 52;
    }

}

答案 4 :(得分:0)

此行为的原因是参数在Java中按值传递。这意味着它只是您传递给它的变量的副本。因此,您所做的任务仅限于该方法的本地。