2011-03-21 96 views
0

我相信這對於很多人來說是一個非常簡單的問題,但我正在爲此付出努力。我試圖從下面的構造函數中獲取一個值並將其放入一個向量中。從另一個類的構造函數中獲取價值

雖然每次將對象添加到矢量中,但放置在矢量中的值都爲null。我怎樣才能讓數字成爲向量中放置的值?

的CInteger類:

public class CInteger 
{ 
    private int i; 
    CInteger(int ii) 
    { 
     i = ii; 
    } 
} 

而在我的A1類的構造函數,我在所獲得的價值的嘗試:

Object enqueue(Object o) 
    { 
     CInteger ci = new CInteger(88); 
     Object d = ?? 
     add(tailIndex, d);// add the item at the tail 
    } 

謝謝大家的任何見解和幫助下,我仍然學習。

編輯:解決

CInteger類:

public class CInteger implements Cloneable // Cloneable Integer 
{ 
    int i; 
    CInteger(int ii) 
    { 
     this.i = ii; 
    } 

public int getValue() 
    { 
     return i; 
    } 

} 

兩個排隊方法:

public void enqueue(CInteger i) // enqueue() for the CInteger 
{ 
    add(tailIndex, new Integer(i.getValue())); get int value and cast to Int object 
} 
public void enqueue(Date d) // enqueue() for the Date object 
{ 
    add(tailIndex, d); 
} 

非常感謝大家。 :d

+1

究竟是你想設置 「d」 來? – 2011-03-21 03:02:20

+0

我想從CInteger中設置「d」爲int值「88」。除了對象之外,我不能擁有排隊的參數,因爲之後我會排入一個「Date」對象。 – Jordan 2011-03-21 03:18:56

+0

爲什麼enqueue有一個參數?你是否試圖入選Object o或CInteger ci? – donnyton 2011-03-21 03:19:10

回答

2

您可以簡單地重載enqueue類以同時採用日期和整數。無論哪種情況,聽起來您都需要在CInteger中使用getValue()方法,該方法允許您訪問int值。

public class CInteger 
{ 
    //constructors, data 

    public void getValue() 
    { 
     return i; 
    } 
} 

,然後你可以有兩個排隊()方法在其他類:

public void enqueue(Date d) 
{ 
    add(tailIndex, d); 
} 

public void enqueue(CInteger i) 
{ 
    add(tailIndex, new Integer(i.getValue()); //access the int value and cast to Integer object 
} 

而Java會知道哪一個您所呼叫自動根據參數。

+0

非常感謝你!這工作完美! – Jordan 2011-03-21 03:32:27

1

這是不完全清楚你實際上是試圖做的,但我認爲這就夠了:

Object enqueue() { 
    CInteger ci = new CInteger(88); 
    add(tailIndex, ci);// add the item at the tail 
    return ci; // this will automatically upcast ci as an Object 
} 
+0

感謝您的回覆。不過,我已經嘗試過這一點,並且在打印出矢量內容時仍然將值設爲null。 – Jordan 2011-03-21 03:16:05

1

試試這個。

public class CInteger { 
    private int i; 

    CInteger(int ii) { 
     this.i = ii; 
    } 
} 

Using the this Keyword

+0

「這個」在這裏不會有所作爲,對吧? – 2011-03-21 03:49:13

1

豈不只是:

void main(string[] args) 
{ 
    CInteger ci = new CInteger(88); 

    encqueue(ci.i); 
} 

Object enqueue(Object o) 
{ 
    add(tailIndex, o); 
} 

還是我失去了一些東西?

+0

是的,只有在CInteger構造函數處於enqueue方法時纔有效。我需要main()中的構造函數。 – Jordan 2011-03-21 03:28:08

+0

嗯,根據你的問題,你真的不清楚你想要完成什麼。你是否想要構造一個CInteger,然後排入它的基礎值或什麼? – 2011-03-21 03:33:17

+0

好吧,我更新了我的答案以反映這一點,但我仍然只有34.5%左右確定你實際上想要做的事情。 – 2011-03-21 03:48:50

1

首先,Constructors永遠不會返回任何值。您必須通過其對象訪問該值,或者必須使用getter方法。

對您而言,「private int i;」無法直接訪問。所以儘量讓它成爲公共的或者有一些getter方法。

所以嘗試:

CInteger ci = new CInteger(88); 
    Object d = ci.i; // if i is public member 
    add(tailIndex, d); 

... 
    private int i; 
    ... 
    public int getI() { 
     return this.i; 
    } 
    ... 
    CInteger ci = new CInteger(88); 
    Object d = ci.getI(); 
    add(tailIndex, d); 
相關問題