2011-12-22 40 views
2

我若創建對象 而assing數據的陣列實施例後的...問題在對象陣列=所有元素都相同的...分配數據

短版本。 數組[0]的.init( 「CE」,2) 陣列[1]的.init( 「NH」,2)

輸出...陣列的[0] 將是相同陣列[1] 但是爲什麼?怎麼了?我需要..不一樣的結果

下面是代碼:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.*; 
import java.lang.Math; 


public class Gra_ulamki { 

    /** 
    * @param args the command line arguments 
    */ 

    public static ulamek[] tab_ulamkow; 
    public static void main(String[] args) 
    { 

     tab_ulamkow = new ulamek[30]; 


     tab_ulamkow[0] = new ulamek(); 
     tab_ulamkow[0].init("dd", 5); 

     tab_ulamkow[1] = new ulamek(); 
     tab_ulamkow[1].init("dde", 8); 

     System.out.println("poz x --" + tab_ulamkow[0].x + "-- y poz " + tab_ulamkow[0].y); 
      System.out.println("poz x --" + tab_ulamkow[1].x + "-- y poz " + tab_ulamkow[1].y); 

     // TODO code application logic here 
     //new GUI(); 
     //new GUI(); 
    } 

} 

class ulamek 
{ 
public static String ch_v; 
public static int x = 0, y = -5, y_max = 325; 


public void init(String a, int number) 
{ 
    this.ch_v = a; 

    // przypisanie x 
    this.x = number;  
} 


public void move() 
{ 


    // restart pozycji w osi y 
    if(this.y < y_max) 
    { 
     this.y += +1; 
    } 
    else 
    { 
     this.y = -5; 
    } 

} 

} 

謝謝大家幫忙

+0

'static'表示共享。 ;)最好不要在構造函數中設置靜態字段。 – 2011-12-22 16:01:42

+0

你介意回答一個問題嗎? – everton 2011-12-22 16:05:29

回答

6

如果數據成員是static,這意味着它是由類的所有實例共享:

public static String ch_v; 
public static int x = 0, y = -5, y_max = 325; 

刪除兩個static修飾符。

+0

謝謝!其作品 – 2011-12-22 15:59:52

2

ulamek類的欄目爲static

這意味着,他們屬於ulamek Type,而不是它的instances(對象)。

改變這樣說:

class ulamek 
{ 
    public String ch_v; 
    public int x = 0, y = -5, y_max = 325; 
... 

,它應該工作。

2

ulamek類:

變化:

public static String ch_v; 
public static int x = 0, y = -5, y_max = 325; 

到:

public String ch_v; 
public int x = 0, y = -5, y_max = 325; 

聲明的變量或方法靜態意味着它的值是在所有類可用。

相關問題