2013-03-04 67 views
-3

這可能是一個非常簡單的答案,但我甚至不知道如何搜索以找到它,所以我認爲我最好問。在整個Java類中使用變量

我真的不明白如何創建一個變量(特別是一個數組),我可以在整個Java程序中使用?變量需要從多個方法中訪問,並且它的大小由用戶輸入(args)設置。任何人都可以對此有所瞭解嗎?歡呼任何幫助。

Public class example{ 

//this is the array that needs accessing from multiple places 
int anArray[][]; 

public static void main(String args[]){ 

    int size = 5; 
    add1(size); 
    add2(size); 
} 

public static void add1(int size){ 

    //seeing as the size of the array is being defined by the user input, it's created here after being passed the size argument. 

} 

public static void add2(int size){ 

    //add more content to the array here 
} 
} 
+4

使其靜態休息一下就好了。 Protip:學習面向對象的編程範例 – x4rf41 2013-03-04 13:49:45

+0

它是一個常量數組嗎? – user1428716 2013-03-04 13:50:13

+0

沒有'int anArray [] []''語法錯誤'? – 2013-03-04 14:20:22

回答

2

要小心,光在那些討厭的靜態修飾符......可能與多線程的東西打交道時,讓不少麻煩......

你應該想到的對象實例。 main方法是靜態的:它屬於類本身,而不是實例。因此,在第一,你必須創建類的實例,通過構建一個與new關鍵字,沿着這些線路:

Public class Example{ //note: Class Names Start UpperCased! 

//this is the array that needs accessing from multiple places 
int anArray[][]; 

public static void main(String args[]){ 
    int size = 5; 

    Example example = new Example(); // create instance 
    example.add1(size); //using the instance 
    example.add2(size); 
} 

public void add1(int size){ //note: no static! 

    //seeing as the size of the array is being defined by the user input, it's created here after being passed the size argument. 
    anArray = new int[size][size]; //you can create it here 

} 

public void add2(int size){ //note: no static 
    //add more content to the array here 
    //do something here 
    System.out.prin 
} 
} 

但是也有面向對象編程的很多細微之處,像我會做在構造函數中初始化,接受初始大小等等。

+0

乾杯,這正是我一直在尋找的!我瞭解基本的Java我只是努力去掌握OOP。 – user2092004 2013-03-04 22:57:33

0

用途:

static int anArray[][]; 

靜態變量可以通過靜態和非靜態方法來訪問。

非靜態變量不能通過靜態方法訪問。

+2

儘管你的論點是有效的,並且解決了OP的直接問題,但我不會同意這是向沒有經驗的人教授適當面向對象方法的方法。 – ppeterka 2013-03-04 13:59:09

+0

@ppeterka我同意你的意見。我不是將它作爲答案中的註釋加入,而是將它作爲另一個答案。 :) – nav0611 2013-03-05 02:37:47

2

您首先要創建一個類的構造,它初始化對象:

public example() { 
    anArray = new Integer[10][10](); 
} 

現在你已經初始化,您可以訪問其他的方法,比如ADD1方法變量:

public void add1(int size) { 
    anArray[1][1] = size; 
} 

你說得對,這個問題是非常基本的,最好先用Java做一門基礎課程。 tutorial that Oracle provides是相當不錯的,我會推薦它,如果你不想花任何錢。如果你願意花一些錢,Liangs introduction to Java, the comprehensive editio n是一個很好的起點。

0

我會建議你在使用的任何編輯器(日食或一些我認爲的)中創建一個新項目,然後創建一個包含構建其他(邏輯類或GUI)fx對象的主程序的類文件。

一個很好的方法來設置一個類將是這樣的:

class ClassYourMaking { 

    // Field Values go here. (variables that are used throughout a 
    // class is called field values). 

    variable1; (notice no instanciation.) 
    variable 2; 
    // etc. 

    // Constructor(s). 
    public ClassYourMaking() { // perhaps some params if it makes sense. 
     // field values are usually initialized in the constructor somehow. 
    } 

    // Methods goes here. 

    public void method1() { 
     // something. 
    } 


} 

然後你可以有一個主程序,它不一定去的唯一途徑,但你可能也習慣了好的做法制作一個小型的主要節目。

class ClassYourMakingsMainProgram { 

    public static void main(String[] args) { 

     ClassYourMaking newInstance = new ClassYourMaking(); 

     // you can then reach into the object of your class like so: 

     newInstance.method1(); 
    } 
} 

如果這一切沒有意義的你,請你幫個忙,並在類層次結構念起來與Java對象的工作。在開始幾英里之前很難完成,但一旦你習慣了它,你就不會有那麼多問題。

1

首先你不正確地初始化它。

int anArray[][]; 

應該是:

int[][] anArray; 

你這是怎麼設置的變量。首先你在這種情況下聲明你的類型是一個int,但是它是一個int,它是一個二維數組,所以你必須使用int [] []。在這一點上,它應該能夠在整個課程中訪問。

現在在主要方法中,如果您想要獲取它,您必須使用args []獲取用戶輸入。現在你正在設定一個5的值。

int size = args [0]如果你知道args []如何工作,可能會工作。 這是對此的解釋:What is "String args[]"? parameter in main method Java

一旦你得到你的大小整數,你必須調用anArray的構造函數,因爲現在它還沒有被構造。 這看起來像(如果你希望它是一個正方形):

anArray = new int[size][size] 

此鏈接可能有助於闡明如何創建二維數組更多的光線:http://www.java2s.com/Code/Java/Collections-Data-Structure/CreatingaTwoDimensionalArray.htm