簡體   English   中英

Java 對象被覆蓋而不是新的

[英]Java Object Overwriten and not new made

對於我的下一個 Java 項目,我想創建一個 Vector(命名為 Vektor)類,用於自己保存 1,2 或 3 維向量。 Vektor 類在創建時輸入的每個參數數量都有三個構造函數。 它還有一個 show() 方法可以將 Vektor 打印為數組。 啟動 Vektor 時出現以下問題:啟動代碼:

public static void main(String[] args) {
Vektor x = new Vektor(1);
Vektor xy = new Vektor(2,3);
Vektor xyz = new Vektor(4,5,6);
x.show();
xy.show();
xyz.show();

輸出:

[4,5,6]
[4,5,6]
[4,5,6]

Vektor 類看起來像這樣:

public static int[] alpha = new int[3];
public Vektor(int x) {
this.x = x;
alpha[0] = x;
}
public int[] show() {
System.out.println(Arrays.toString(alpha));
return alpha;

當然,構造函數隨着參數的數量而變化。 除了在 Vector 中存儲所有變量的 Array alpha 之外,還有變量 x,y,z 在出現在構造函數中時會填充它們的值。 我真的希望有人能幫我弄清楚為什么我得到了 3 倍相同的輸出而不是三個不同的輸出,因為我創建了三個不同的對象。 謝謝,盧卡

更新:發現問題。 數組不應歸類為“靜態”。 謝謝你們。

根據您提供的代碼,似乎每次實例化Vektor類時, alpha數組都會更新以保存最近實例化的一些(如果不是全部)最近的構造函數參數。

您需要將 alpha 數組從靜態更改為公共(理想情況下使用 getter/setter 私有)以將alpha數組封裝在創建它的每個對象中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM