2017-02-24 61 views
-4

我主要想知道的是: 在行public static void val(int[] x)(int[] x)做什麼? 另外:爲什麼我會得到最終加起來值當我問爪哇給我同樣的過程不同的結果

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

但不適用於:

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

爲什麼心不是谷()方法不轉換「I2」的值改爲「X 「立即,然後繼續編譯通過使用」x「值爲後續'i2'計算....對不起,如果我的問題是模糊的....我只是不知道如何把它....謝謝

完整代碼:

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)將原始整數類型作爲參數,因此方法內的修改不會影響原始值。爲了更好地理解您可以修改您的VAL(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 = new int[] {35, 57};這將使x點的值不同的參考,並不會影響到原來的值。希望澄清!

-1
  • 您的方法val(int [] x)在此代碼中完全沒有實現。它返回void(沒有)到main()函數的操作,你瓶坯內VAL()與數組x x的副本完成...

可能的解決辦法:

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 
  • 同樣的故事與淡水河谷()!