2014-02-27 81 views
0

我已經寫下了一些信用卡類的代碼,粘貼在下面。我有一個構造函數中說變量,和我的一些方法致力於這些變量的格式化成字符串,使得最終輸出將是沿着Integer.toString(參數)或toString(參數)

號線的東西:1234 5678 9012 3456
到期日期:10/14
帳戶持有人:鮑勃·瓊斯
是有效的:真

(將無法正確格式化 - 我不確定如何做到這一點,將不勝感激的人可以編輯我:))

我的問題是,在該行

String shortYear = Integer.toString(expiryYear).substring(2,4); 

爲什麼不會以下工作:

toString(argument).substring(2,4) 

我會想到它纏繞工作過(expiryYear基本上聲明爲int類型的實例變量)。我已經諮詢了我的書(官方Java教程也在網上找到),並且似乎無法找到任何東西。我甚至都不知道Integer.toString,一個朋友在嘗試使用toString()之後告訴我的,所以如果有人能告訴我在哪裏可以找到這些類型的方法,我會更加感激不要以爲他們是在我的書)

public class CreditCard { 

    private int expiryMonth; 
    private int expiryYear; 
    private String firstName; 
    private String lastName; 
    private String ccNumber; 

    public CreditCard(int expiryMonth, int expiryYear, String firstName, String lastName, String ccNumber) { 
     this.expiryMonth = expiryMonth; 
     this.expiryYear = expiryYear; 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.ccNumber = ccNumber; 
    } 

    public String formatExpiryDate() { 
     String shortYear = Integer.toString(expiryYear).substring(2, 4); 
     String expiryDate = expiryMonth + "/" + shortYear; 
     return expiryDate; 
    } 

    public static void main(String[] args) { 
     CreditCard cc1 = new CreditCard(10, 2014, "Bob", "Jones", "123456789"); 

     System.out.print(cc1.formatExpiryDate()); 
    } 
} 
+5

因爲你沒有一個'toString'函數,它的參數。 – SLaks

+0

如果你想使用它,你需要定義這個函數toString,它不像過程語言(例如C),它是OOP –

+0

不是toString一個公共方法,它是對象類的一部分(它是每個類的超類實現類),所以我應該能夠訪問它?還是我在這裏想錯了? – user3186023

回答

3

嘗試String.valueOf(expiryYear).substring(2,4)

+0

Yay另一個DBZ粉絲:D。關於主題;感謝您的回覆 - 您有任何鏈接或任何可以找到這些功能的地方嗎?他們肯定喜歡他們對我有用。 – user3186023

+0

@Tazman @dazman http://docs.oracle.com/javase/7/docs/api/java/lang/String.html –

+0

@Tazman Oracle爲核心Java類提供一切文檔。如果你需要搜索「Class」java api –