Java 设计大整数类
我正在设计一个名为HugeInteger的类,它使用40个元素的数字数组来存储整数。我提供了一个名为parse的方法,在该方法中,它接收一个字符串,提取每个数字,如下面的代码段所示。我还提供了add方法,它接收HugeInteger类的对象来进行添加。 为add提供的方法不符合建议,我希望您能帮助我解决问题。 我注意到以前有人问过一些类似的问题,但这对我没有帮助Java 设计大整数类,java,Java,我正在设计一个名为HugeInteger的类,它使用40个元素的数字数组来存储整数。我提供了一个名为parse的方法,在该方法中,它接收一个字符串,提取每个数字,如下面的代码段所示。我还提供了add方法,它接收HugeInteger类的对象来进行添加。 为add提供的方法不符合建议,我希望您能帮助我解决问题。 我注意到以前有人问过一些类似的问题,但这对我没有帮助 private int [] integerDigits = new int[SIZE]; //constructor that e
private int [] integerDigits = new int[SIZE];
//constructor that enables an object of class to be initialised when it is declared
public HugeInteger(String stringOfIntegers)
{
setOfIntegers = stringOfIntegers;
}//end of constructor
private int[] parseFunction (String str)
{
for (int i = 0; i < str.length(); i++)
{
char ch = str.charAt(i);
if (Character.isDigit(ch))
integerDigits[i] = Character.getNumericValue(ch);
else
integerDigits[i] = 0;
}
return integerDigits;
}//end of method parseFunction
public HugeInteger addFunction(HugeInteger number)
{
parseFunction(setOfIntegers);
return new HugeInteger(setOfIntegers +number.parseFunction(setOfIntegers));
}//end of method addFunction
private int[]integerDigits=new int[SIZE];
//构造函数,使类的对象在声明时能够初始化
公共HugeInteger(整数字符串)
{
setOfIntegers=stringOfIntegers;
}//构造函数结束
私有int[]解析函数(字符串str)
{
对于(int i=0;i
错误在这一行:
return new HugeInteger(setOfIntegers +number.parseFunction(setOfIntegers));
因为setOfIntegers是一个字符串,+符号并不表示相加,而是表示串联(背靠背写入)。因此,当添加5和6时,将得到56而不是11。
与调用构造函数不同,您需要实现加法,就像在纸上一样,从后面到前面,使用变量保存进位号
例如:
99
+ 11
0 carry 1
10 carry 1
= 110
此外,由于您总是使用40位数字,并且从数组的前面开始,因此您的问题无法知道这些数字中有多少真正属于该数字,因此无法区分“5”、“500”、“5000”等等。这是一个问题,因为parseFunction(5)=parseFunction(50)={5,0,0,0,…,0}(总共39个零),并且问题不知道如何对齐数字。最好向下循环(“integerDigits[40-i]=Character.getNumericValue(ch);”),因为这样“5”将变成0000…05,“50”将变成000050
另一个小错误是
number.parseFunction(setOfIntegers)
应该是哪一个
number.parseFunction(number.setOfIntegers)
为添加提供的方法未按建议工作
。。。怎么做?这是家庭作业,还是因为其他原因你不喜欢biginger
?你需要先解决解析问题,添加一个单元测试。除非你有数字要加,否则你不能有意义地加。然后创建一个测试,将两个数字相加,并编写一个循环,将每个数字相加。并非所有方法名称都必须以“Function”结尾。debug按钮位于run按钮旁边。Java中没有函数,只有方法感谢Kirdie的参与,非常感谢。