2012-06-02 43 views
0

不得不說我是一個總的新手到Java。最近我正在學習使用java進行考試的數據結構。而通過基於數組的堆棧,我發現下面的代碼。需要一些協助與java堆棧

class StackX { 

    private int maxSize;  // size of stack array 
    private long[] stackArray; 
    private int top;   // top of stack 

    //------------------------------------------------------------- 

    public StackX(int s)   // constructor 
    { 
    maxSize = s;    // set array size 
    stackArray = new long[maxSize]; // create array 
    top = -1;    // no items yet 
    } 


    //------------------------------------------------------------- 
    public void push(long j) // put item on top of stack 
    { 
    stackArray[++top] = j;  // increment top, insert item 
    } 

我對前三行有一個想法,但我很困惑於理解下面的行。

 maxSize = s;    // set array size 

    stackArray = new long[maxSize]; // create array 

    top = -1;    // no items yet 

有人可以解釋爲什麼一個陣列,其是數據類型在使用[MAXSIZE]?不應該是數字,因爲數據類型很長。

也爲什麼使用長j推(長j)沒有變量與j相關聯。

幫助&評論感謝。

+3

您應該改善您的標題 –

回答

0

有人可以解釋爲什麼在數組中使用[maxSize]是長數據類型嗎?不應該是數字,因爲數據類型很長。

儘管您的數組可能被聲明爲long類型,但索引仍爲int。無論數組的類型是什麼,索引都是int。有關更多信息,請參閱this page上的示例。

此外,爲什麼在推動中使用長j(長j)沒有與j相關的變量。

查找調用此方法的代碼push(),您會發現一個與j關聯的變量。而且由於你的數組是long,所以當你將元素放入這個(推)時,它們也必須是long類型。因此,long j

+0

感謝您的幫助球員 – user1419170

4

有人可以解釋爲什麼在數組中使用[maxSize]是長數據類型嗎?不應該是數字,因爲數據類型很長。

maxSize是一個整型變量,用於指定創建的數組的大小。因此該語句:

stackArray = new long[maxSize]; 

創建具有maxSize元件(例如20),然後一個元素分配到該陣列到stackArray變量的引用。我們建議您閱讀Java tutorial section on arrays

也是爲什麼使用長j在推(長j)沒有變量與j相關聯。

此方法聲明:

public void push(long j) 

參數稱爲j。這意味着無論何時調用該方法,都必須將long值作爲參數傳遞給該方法。該方法調用的參數的初始值與您傳遞的值相同。從該點開始,它就像該方法的局部變量。再次,Java tutorial on methods可能會幫助你。

7

我建議尋找一些網站或書籍,從頭開始,試圖只跳和理解一切不傾向於適用於大多數人,但在回答你的問題:

stackArray = new long[maxSize];創建可以容納long類型的變量的新的數組大小'maxsize'。 'maxsize'是int類型,它是一個整數,並且該數組中只能包含整數個元素。

long j使用,因爲這意味着方法必須在某點push(1.0)它調用推送方法,並傳遞在1.0作爲j被調用。然後將它放在位置頂部+1的陣列中。