2010-11-27 49 views
1

我對Java很新,這讓我非常困惑。使用不同類的方法

我有兩個類。一個(controlNumber)有兩個用於數字的int字段,一個是當前數字,另一個是最大數字(一旦當前數字達到此數字,它將重置爲1)。構造函數將當前數字初始化爲1,並將max作爲參數(並檢查最大值是正值還是小於100)。
我有一個返回當前數字的方法,一個返回最大數字,一個將max設置爲當前數字,一個將當前數字加1(工作方向朝向最大值),最後一個返回如果當前編號只有一位數字(所以5變爲05),那麼在前面加上「0」的當前編號的字符串。
了toString看起來是這樣的:

這個類的工作就好了。
第二堂課是我開始遇到問題的地方。它有兩個領域,這是上面的類。構造函數用兩個不同的最大值初始化它們。所有這些似乎都在起作用。
現在我需要一個toString方法,它將返回一個字符串與兩個字段的當前值,如果它是一個數字,則前面的「/」和前面的「0」(所以如果日期是3,月份是11,將返回「03/11」)。我的第一個想法就是使用上面使用Integer.toString的東西,但事實證明,你不能這樣做(即使controlNumber類中的字段是ints)。所以我想從上面使用我的方法(這是在不同的類),因爲它大部分我想要的,但我不知道如何。

我希望我有道理,有人可以幫我弄清楚如何解決我的問題。

回答

1

如果您有上述類型的兩個字段,稱爲A和b

public String toString() { 
    return a + "/" + b; 
} 

無需明確調用toString(),因爲這是行爲。唯一的區別是,如果a或b爲null,則將打印「null」,而調用toString()將拋出NullPointerException。

順便說一句,您可以縮短你的方法

public String toString() { 
    return (currentNumber > 9 ? "" : "0") + currentNumber; 
} 
+0

感謝。 a和b永遠不能爲空(如果它們是我的代碼已經搞糟了:P)。 – GeorgeWChubby 2010-11-27 13:42:14

1

我假設你的意思是有一個類SomeClass,它有兩個字段類型ControlNumber,並且你想實現SomeClass.toString()來打印字段的組合值。如果是這樣的話,那麼你會做這樣的事情:

class SomeClass 
{ 
    ControlNumber number1; 
    ControlNumber number2; 

    [...] 

    public String toString() 
    { 
     return number1.toString() + "/" + number2.toString(); 
    } 
} 

更新:

正如彼得指出,要number.toString()明確的呼叫可以被排除在外,因此上述可能改寫爲:

public String toString() 
    { 
     return number1 + "/" + number2; 
    } 
+0

非常感謝您的幫助 – GeorgeWChubby 2010-11-27 13:42:54

0

我會接近這個問題的方法:

首先,格式化整數創建效用函數:

public class StringUtil { 

    public static String format(int i) { 
     if (i > 9) { 
      return String.valueOf(i); 
     } else { 
      return ("0" + String.valueOf(i)); 
     } 
    } 

} 

現在,您可以使用其他類中的此實用程序代碼:

public String toString() { 
    return StringUtil.format(currentNumber); 
} 

public String toString() { 
    return StringUtil.format(max1) + "/" + StringUtil.format(max2); 
} 
相關問題