在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);
}
}
或许有不同的方法可以做到这一点?
答案 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
参数,其中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();
}
答案 1 :(得分:0)
String有toCharArray()方法,可以为您提供所需内容。
n = _number.toCharArray();
值得注意的是,toCharArray
返回原始字符串的副本。因此,您对数组所做的任何更改都不会反映在源字符串中。