java - 数组中的大数 - 构造函数

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

我尝试使用字符串创建一个构造函数,但我不确定它是否好:

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

或者也许有不同的方法来做到这一点?

最佳答案

"I have to make a constructor of an array in which each digit of a big number will be a different char of this array."

你可以这样做

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));
<小时/>

更新

如果您想接受 int 作为构造函数的参数,则需要创建一个采用 int 参数的单独构造函数。在这种情况下,您还需要将 int 设为 String,然后获取字符数组。因此,您将有两个构造函数,一个采用 String ,另一个采用 int

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

关于java - 数组中的大数 - 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953769/

相关文章:

java - JNI native dll 不返回 jobjectArray 导致 VM 崩溃

javascript - 正则表达式将字符串转换为有效数字,无小数,符号可选

javascript - Node.js child.stdin.write 不起作用

java - 当其中包含空格时,无法构建有效的 URL

javascript - React Native 中的 Arraylist 添加/删除 View

java - 将 String 除以 StringTokenizer,然后保存到 2 个数组

Python re.match 只匹配第一个\n

JavaScript Number 保留前导 0

c++ - 如何正确解释数字(十六进制、十进制、十进制)

java - 如果条件明显为真,则 if-else block 不会返回 true,我该怎么办?