2014-01-06 178 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返回原始字符串的副本。因此,对数组所做的任何更改都不会反映在源字符串中。