2017-02-24 4 views
-4

私が主に知りたいことは の行public static void val(int[] x)は何ですか(int[] x)は何ですか?また :私はJavaは私に同じプロセスで異なる結果を与えています

for(int y:i){ 
    System.out.println(y); 
} 

ではなくを頼むとき、なぜ私は最終合算値を取得しています:「Xに「I2」の値を変換しない

int y=2+i2; 
    System.out.println(y); 

なぜ谷イマイチ()メソッド"すぐに、その後、" i2 "の計算に" x "の値を使用してコンパイルを続ける....申し訳ありませんが、私の質問があいまいな場合....私はちょうどそれを置く方法を知りません....ありがとう

完全コード:

public static void main(String[] args) { 

    int[] i = { 25, 22 }; 
    int i2 = 41; 
    val(i); 
    for (int y : i) { 
     System.out.println(y); 
    } 
    vale(i2); 
    int y = 2 + i2; 
    System.out.println(y); 

} 

public static void val(int[] x) { 
    for (int c = 0; c < x.length; c++) { 
     x[c] *= 2; 
    } 

} 

public static void vale(int x) { 
    x += 23; 
} 
+0

https://docs.oracle.com/javase/tutorial/java/index.html –

+0

メソッドvale(int x)は意味をなさないものです。あなたはそのような変数に影響を与えることはできません。あなたは結果を返さなければならず、呼び出し側はそれを処理しなければなりません。 –

答えて

0

私はあなたが、Javaの値と基準によってパスについて読むために必要があると思います。あなたの質問に関しては、両方ともval(i) & vale(i2)は値渡しです。配列はオブジェクト型であるため、参照はval(i)の場合にメソッドに渡されます。したがって、参照を印刷するときにその変更を見ることができます。しかし、vale(i2)は、パラメータとしてプリミティブ整数型をとるため、メソッド内の変更は元の値に影響しません。この優れた次のようにあなたのヴァル(INT [] x)の方法を変更することができます理解するために:

public static void val(int[] x) { 
     x = new int[] {35, 57}; 
     for (int c = 0; c < x.length; c++) { 
      x[c] *= 2; 
     } 
    } 

を私は異なる基準にxポイントの値を作成し、元の値に影響を与えないx = new int[] {35, 57};を追加しました。これが明確になることを願っています!

-1
  • val(int [] x)メソッドは、このコードではまったく何も行いません。それは...あなたはxのコピーで行われヴァル()あなたの配列xと内部のプリフォームmain()関数および操作に無効(何を)返し

可能修正:

public static int[] val(int[] x){ 
int[] newarr = new int[x.length]; 
for (int c=0; c<x.length;c++){ 
    newarr[c] = x[c]*2; 
} 
return newarr; 
} 
メインで

:ヴァーレと

int[] i={25,22}; 

i = val(i); // creates an array with every element doubled and assigns it to i 
  • 同じ話()!
関連する問題