0
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 の値を出力しています。

次に、メイン メソッドに戻りcng、変数に対してメソッドが実行されnumます。

ただし、私がやりたいことは、メソッドでSystem.out.println(x); 関数を使用せずに 52 の値を 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);
}

しかし、num が 0 に設定されているため、0 しか表示されません。変数を実行cngするnumと 52 に変わると思いましたが、そうではありません。

4

5 に答える 5

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;
于 2012-11-23T08:26:41.813 に答える
1

参照によってデータを渡したい。これは、Javaのプリミティブ値(int、double、booleanなど)では不可能です。

次のオプションがあります。

  • クラスのメンバーにする
  • ラッパーオブジェクトを作成します(オブジェクト参照も値によって渡されますがオブジェクト参照自体ではなく、関数内でそのオブジェクトのメンバーを変更できます)
  • 関数の値を返します(他の回答で言及されているように)
于 2012-11-23T08:27:45.103 に答える
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;
    }

}
于 2012-11-23T08:30:53.523 に答える
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;
}

}
于 2012-11-23T08:28:23.190 に答える
0

この動作の理由は、Java では引数が値で渡されるためです。これは、渡した変数の単なるコピーであることを意味します。したがって、行う割り当ては、メソッドに対してのみローカルです。

于 2012-11-23T08:31:50.813 に答える