2015-11-09 89 views
1

我正在處理一個簡單的示例。初始化a的值爲1,b爲2.我打電話給方法進行更新,當我打印此a和b時。預期會是1和2。但是我應該在每個循環中更新這個a和b,我該怎麼做呢?我開始想到返回列表。有沒有簡單的方法來完成它?在遞增遞增的for循環中更新變量

public class UpdateTest { 

    public static void main(String[] args) { 
     int a=1; 
     int b=2; 
     for (int i = 0; i < 5; i++) { 
      update(a,b); 
     } 

     System.out.println(a+"------"+b); 
    } 

    private static void update(int a, int b) { 
     // TODO Auto-generated method stub 
     for (int i = 0; i < 10; i++) { 
      a++; 
      b++; 
     } 
    } 

} 
+2

Java總是按值傳遞。 –

+0

@ElliottFrisch我認爲他知道如何輕鬆返回2個值(a和b的值) – ParkerHalo

回答

2

您可以將這些值放在一個類中,例如

class Pair { 
    int a, b; 
    Pair(int a, int b) { 
     this.a = a; 
     this.b = b; 
    } 
} 

初始化像這樣

Pair pair = new Pair(1, 2); 

然後修改更新方法相應

private static void update(Pair pair) { 
    for (int i = 0; i < 10; i++) { 
     pair.a++; 
     pair.b++; 
    } 
} 
1

它不是很美觀,但做的工作:你可以簡單地返回包含該值的數組的a和b。

public class UpdateTest { 

    public static void main(String[] args) { 
     int a=1; 
     int b=2; 
     for (int i = 0; i < 5; i++) { 
      int[] ret = update(a,b); 
      a = ret[0]; 
      b = ret[1]; 
     } 

     System.out.println("a= " + a + ", b= " +b); 
    } 

    private static int[] update(int a, int b) { 
     for (int i = 0; i < 10; i++) { 
      a++; 
      b++; 
     } 
     int[] ret = {a,b}; 
     return ret; 
    } 
} 
+0

爲什麼循環而不是+ = 10和b + = 10? – FredK

+0

我剛剛從OP提供的源代碼中取得了這部分內容!當然你是對的,快一點就是'a + = 10; B + = 10' – ParkerHalo