public class TriVal {
private static int x;
private static int y;
private static int z;
TriVal(int x, int y, int z) {
TriVal.x = x;
TriVal.y = y;
TriVal.z = z;
}
public int sum(TriVal p2) {
int a = Math.abs(TriVal.x + p2.x);
int b = Math.abs(TriVal.y + p2.y);
int c = Math.abs(TriVal.z + p3.z);
int sum = a + b + c;
return sum;
}
}
這是包含一組3個值的對象的構造函數的一部分。 但是,我正在編寫一個函數,該函數通過將此對象的兩個實例的x,y和z相加來創建一個新的TriVal。將對象的新實例設置爲相同的值
所以說我們有
TriVal p1 = new TriVal(10, 10, 10);
TriVal p2 = new TriVal(20, 20, 20);
調用函數
p1.sum(p2)
(這是在其他地方類在內)應返回90 但是,它會返回120 我得知在創建TriVal對象的新實例時,先前定義的p1實例在某種程度上被設置爲與p2相同的值,這解釋了總和爲120.我相信這個錯誤位於某處ñ我的構造函數,也許以我更新值的方式或在類的頂部聲明變量? 任何有用的提示將不勝感激,謝謝!
你知道靜態關鍵字的含義嗎?如果你不這樣做,我建議你查看它。您正在更改靜態值x,而不是實例變量x – Orin
爲什麼將'x','y'和'z'聲明爲'static'?那是你的問題。 – JonK
[可能是'static'關鍵字在類中做了什麼?](http://stackoverflow.com/questions/413898/what-does-the-static-keyword-do-in-a-class) –