2014-10-26 41 views
0

我最近開始介紹java類(我因爲缺乏知識而提前道歉),並且遇到了一些麻煩。我被要求製作一個包含3個數據字段,2個構造函數和4個方法的程序。Java編碼和構造函數

我有一段時間試圖把一些輸入到這裏,用戶可以從3個數據字段中的一箇中選擇我爲車價作出的選擇,並選擇他們的車輛。就構造函數而言,我做了一個默認的構造函數,但我不確定如何實現A)另一個構造函數,以及B)如何將輸入包含到這個元素中,以及C)如何實現這些方法。

我在考慮把輸入放到第一位,但是這樣會毀掉我的構造函數?

我意識到我問了很多,但這是一個沒有文字的在線課程,而我基本上正在捱餓。我已經包括了我在下面得到的結果。感謝您的反饋。同樣,我對知識的缺乏道歉,但我想 -

public class Vehicle{ 
    int truck; 
    int car; 
    int van; 

    public Vehicle(int t, int c, int v){ 
     truck=t; 
     car=c; 
     van=v; 
    } 
    public Vehicle(){ 
     truck=0; 
     car=0; 
     van=0; 
    }  
} 
public static void main (String[] args) { 
    Vehicle cost= new vehicle(25000,15000,22500); 
    //*cost.truck=25000; cost.car=15000; cost.van=22500;*// 
    Vehicle this Vehicle= new vehicle(); 
    Vehicle choice Vehicle= new vehicle(25000,22500); 

    system.out.println("Default prices are 25000 for a truck, 15000 for a car, and" 
         + "22500 for a van, you chose" + 

} 

} 
+0

編程問題是題外話,在[cs.se] SE。對於一些正確方向的指針,你應該檢查你的課程材料,並可能找到一本好書去與他們(圖書推薦通常不在Stack Exchange的任何地方,因爲他們完全是基於意見的)。你的構造函數很好,但是你的'main'方法不在任何類中,而且你的變量名('this Vehicle')似乎有空格,這是非法的。根據您的描述或代碼,我實際上無法確定您的程序要做什麼。 – 2014-10-26 08:26:26

回答

0

從你的問題的基礎,你必須要問所有關於如何定義類和一般使用它們。

問題A.如何實現另一個構造函數?

從你的案例中,我看到你已經定義了你自己的構造函數,但有問題來定義另一個。要定義另一個構造函數,你必須知道你的參數 將被傳遞。

在這裏,你有三個參數。 (變量t,c,v)。

public Vehicle(int t, int c, int v){ 
    truck=t; 
    car=c; 
    van=v; 
} 

另一個,沒有參數的構造函數。

public Vehicle(){ 
    truck=0; 
    car=0; 
    van=0; 
} 

當你定義另一個構造,就不能定義的另一個相同類型的三個參數的構造函數,或不帶參數的另一個構造。

因此,你可以有這樣的構造方法。

public Vehicle(int veh, int price){ 
    switch (veh) { 
     case 0: 
      truck = price; 
     case ... 
    } 
} 

問題B.如何涉及輸入?在哪裏涉及他們的方法

從你的問題,這個聲明已經調用構造函數,這意味着,你已經涉及到一個類的輸入。

Vehicle cost = new Vehicle(25000,15000,22500); 

這與調用沒有參數的構造函數以及設置車輛的當前價格是一樣的。

Vehicle choice = new Vehicle(); 
choice.truck = 25000; 
choice.car = 22500; 

現在,如果您在考慮是否有另一種通過方法輸入數據的方法。它被稱爲Encapsulation。要實現這種OOP概念,您應該將數據成員定義爲Private

private int truck; 
// public int truck; <- not like this. 

然後,你可以有涉及輸入和可能輸出。使用getter和setter的概念。其中涉及方法。

// simple setter 
public void setTruckPrice(int t) { 
    truck = t; 
} 

// simple getter 
public int getTruckPrice(int t) { 
    return truck; 
} 

P.S.我忘了編輯它的封裝。

如果您想了解更多信息,請參閱這些鏈接。

http://docs.oracle.com/javase/tutorial/java/javaOO/classes.html

http://www.tutorialspoint.com/java/index.htm

+0

你的多態性的例子與多態性無關。多態性是將多種類型(通常是特定給定類的子類)視爲一種類型的能力,而您的代碼根本不會這樣做。你實際上在做什麼是數據封裝(把數據放入類中,只允許類內部的方法來操作這些數據)。 – 2014-10-26 08:41:03

+0

另外,爲構造函數提供參數通常不被描述爲「輸入」。輸入通常意味着從用戶獲取數據。 – 2014-10-26 08:41:45