数组中的大数 - 构造函数

时间:2014-01-06 15:52:59

标签: java arrays numbers digit

在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);
}

我尝试使用String创建一个构造函数,但我不确定它是否合适:

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);
    }
}

或许有不同的方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

  

我必须创建一个数组的构造函数,其中一个大数字的每个数字都将是该数组的不同字符。”

你可以做到

n = _number.toCharArray();

返回String

的字符数组
private char[] n = null;

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

如果要将BigNumber对象打印为String,则需要@Override toString()类中的BigNumber方法

public class BigNumber {
    ....

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

您当前打印的方式不会像您预期的那样打印阵列。您需要覆盖toString()方法,以使用所需的输出格式将对象输出为String表示。我的简单示例只是将数组打印为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));

更新

如果您想接受int作为构造函数的参数,则需要创建一个带有int参数的单独构造函数。在这种情况下,您还需要使int成为String,然后获取字符数组。所以你会有两个构造函数,一个带String,另一个带int

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

答案 1 :(得分:0)

StringtoCharArray()方法,可以为您提供所需内容。

n = _number.toCharArray();

值得注意的是,toCharArray返回原始字符串的副本。因此,您对数组所做的任何更改都不会反映在源字符串中。