在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
参数,其中 1500
是 int
。你可以做这个
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/