2012-07-02 108 views
-1

考慮follwing代碼:從一個方法返回一個數組引用變量?

class Box { 
    int size; 

    Box(int s) { 
     size = s; 
    } 
} 

public class Laser { 
    public static void main(String[] args) { 
     Box b1 = new Box(5); 
     Box[] ba = go(b1, new Box(6)); 
     ba[0] = b1; 
     for (Box b : ba) { 
      System.out.print(b.size + " "); 
     } 
    } 

    static Box[] go(Box b1, Box b2) { 
     b1.size = 4; 
     Box[] ma = {b2, b1}; 
     return ma; 
    } 
} 

結果是什麼? 我解決它是5 4,但它不是正確的,正確的答案是4 4,這是怎麼回事?

+0

遊戲的一半似乎是修復縮進。我不會玩。 –

+0

請正確格式化縮進 – leonbloy

+0

我爲您修正了縮進 –

回答

0

go方法將b1框的大小更改爲4,並將其放置在數組中的索引1處。然後主要方法也將其設置在索引0處。所以該數組包含兩個對b1的引用,其大小爲4.

0

最後,數組ba有兩個b1實例。兩者都是大小4.

0

使用調試程序遍歷代碼,將您的結果與實際結果進行比較。這會告訴你你的解決方案在哪裏分歧!

go()返回{b2,b1}。然後,您將數組中的第一個條目設置爲b1,而您將使用{b1,b1},這將打印出您獲得的結果。

相關問題