2014-01-06 177 views
1

在Java中,我必須構造一個數組的構造函數,其中大數的每個數字將是此數組的一個不同的字符。數組中的大數 - 構造函數

這是主類:

public static void main(String[] args) { 
    BigNumber bn1 = new BigNumber(1500); 
    BigNumber bn2 = new BigNumber("987349837937497938943242"); 

    System.out.println("line 1: " + bn1); 
    System.out.println("line 2: " + bn2); 
} 

我試圖用一個字符串,使一個構造函數,但我不知道這是否是好的:

private String number; 
private char[] n = null; 

public BigNumber(String _number){ 
    number = _number; 
    n = new char[number.length()]; 

    for (int i = 0; i < n.length; i++){ 
     n[i] = number.charAt(i); 
    } 
} 

或者,也許有不同的方式來做這個?

+0

我認爲for循環它確定。點不敢用它們:) –

回答

1

」我必須建立一個數組的構造函數,其中一個大數字的每個數字將是該數組的不同字符。

你可以做

n = _number.toCharArray(); 

它返回字符串

private char[] n = null; 

public BigNumber(String _number){ 
    n = _number.toCharArray(); 
} 

如果你要打印的BigNumber對象爲String,你需要的字符數組到@Override BigNumber類中的toString()方法

public class BigNumber { 
    .... 

    @Override 
    public String toString(){ 
     return Arrays.toString(n); 
    } 
} 

您當前正在打印的方式將不會像您期望的那樣打印陣列。您需要覆蓋toString()方法,以便以期望的輸出格式將該對象輸出爲String表示形式。我的簡單示例只是將數組打印爲字符串,儘管您可以選擇以任何方式進行格式化。但是要記住的方法必須返回String

然後,你可以做

BigNumber bn2 = new BigNumber("987349837937497938943242"); 
System.out.println("line 1: " + bn2); 

還要注意:您無法

BigNumber bn1 = new BigNumber(1500); 

作爲BigNumber的構造函數只能使用String參數,其中1500int。您可以

BigNumber bn1 = new BigNumber(String.valueOf(1500)); 

UPDATE

如果你想接受int作爲參數的構造函數,你需要創建一個單獨的構造函數的int的說法。在這種情況下,您還需要製作int a String,然後獲取字符數組。所以,你將有兩個構造函數,一個採用一個String,而另一種的int

public BigNumber(int number){ 
    String numString = String.valueOf(number); 
    n = number.toCharArray(); 
} 
+0

爲什麼他不能重載構造函數? –

+0

@ArnaldoIgnacioGasparVejar他沒有理由不能,但是這打破了創建一個字符數組的全部目的。我仍然會發布編輯 –

0

StringtoCharArray()方法,會給你想要的東西。

n = _number.toCharArray(); 

值得注意的是,toCharArray返回原始字符串的副本。因此,對數組所做的任何更改都不會反映在源字符串中。