2015-01-26 70 views
0

我知道這個問題已被問到很多類型,但我沒有得到槽問題。所以下面。我創建了一個創建2個陣列的類。目標是創建點座標,以便稍後可以生成幾個點。海爾是我的代碼從java中的另一個類訪問對象?

import java.util.Random; 

public class Coor { 



private static int[] coord; 

public static int[] generate(){ 
    coord = new int[2]; 
    return coord; 
} 

public static void printX(){ 

     System.out.println("X = " + coord[0]); 

} 
public static void printY(){ 

    System.out.println("Y = " + coord[1]); 

} 

public static int randomFill(){ 
    Random rand = new Random(); 
    int randomNum = rand.nextInt(99); 
    return randomNum; 
} 

public static void main(String args[]) { 

     generate(); 
     for(int i = 0; i < 2; i++){ 
      coord[i] = randomFill(); 
     } 
     printX(); 
     printY(); 
    } 


} 

所以,這是工作完美,但我要的是建立在另一大類分,在那裏使用它們,但我不知道如何來實現這一目標。我是java新手,我幾乎可以理解oracle文檔中的一些示例,但無法實現它。你能幫我一下嗎?我只需要一個獲取點座標的示例類,然後我可以根據需要單獨擴展它。

+0

你爲什麼要創造一切爲靜態?這可能不是你的意圖。 – OldProgrammer 2015-01-26 19:07:04

+0

你的問題是你嘗試在Java中編程而不學習Java語言。我們來看看[這裏](http://www.javabeginner.com/)。 – Mason 2015-01-26 19:13:20

+0

幾乎每個新的java程序都有這個問題。新程序員在編寫第一個程序之前需要理解靜態是一個真正的恥辱。 – bhspencer 2015-01-26 19:26:01

回答

1

你不應該讓你的數據是靜態的,你應該提供一個公共構造函數,見下文。

public class Coord { 

private int[] coord; 

public Coord(int x, int y) { 
    coord = new int[2]; 
    coord[0] = x; 
    coord[1] = y; 
} 

public void printX(){ 
    System.out.println("X = " + coord[0]); 
} 

public void printY(){ 
    System.out.println("Y = " + coord[1]); 
} 

public static void main(String[] args) { 
    Coord c1 = new Coord(10, 11); 
    Coord c2 = new Coord(23, 14); 
} 
} 
+0

在Coord類中不需要使用數組,因爲它本身就是座標。只使用兩個屬性(x,y)。 – Mason 2015-01-26 19:37:58

+1

我完全同意,我贊成保持海報班的結構不變,以便將注意力集中在與靜態成員有關的問題上。 – bhspencer 2015-01-26 19:40:17

+0

你是對的!但我認爲,建議程序員編寫一些教程,尤其是面向對象編程的基礎知識是非常重要的。因爲他可能不瞭解這兩個實例,並且不知道如何使用引用來訪問屬性/方法。 (抱歉我的英文不好)。 – Mason 2015-01-26 19:48:29