最初的问题在我花时间编写代码并创建我自己的reverse
,char2Integer
和pad
函数时丢失了。但如果我记得它是在你的循环中,你试图删除领先的空白。无论如何,这是我到目前为止,这似乎很好地工作:
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("Input int1: ");
char[] firstInteger = sc.nextLine().toCharArray();
System.out.print("Input int2: ");
char[] secondInteger = sc.nextLine().toCharArray();
int[] num1 = char2Integer(firstInteger);
int[] num2 = char2Integer(secondInteger);
sum2(reverse(num1), reverse(num2)); //different length, assumed num1 is bigger
}
public static void sum2(int[] num1, int[] num2)
{
//int over = num1.length-num2.length;
int[] sum = new int[num1.length+1];
//The pad function pads the array with 0 so there are no out of range exceptions
num1 = pad(num1, sum.length);
num2 = pad(num2, sum.length);
for (int i = 0; i < num1.length; i++)
{
sum[i] = sum[i] + num1[i] + num2[i];
//if an element exceeds a value of 10
if (sum[i] >= 10)
{
sum[i] = sum[i]%10;
sum[i+1]++;
}
}
sum = reverse(sum);
for (int i = 0; i < sum.length; i++)
System.out.print(sum[i]);
}
而这里是我为你写的垫功能。
public static int[] pad(int[] toPad, int length)
{
int[] returnArray = new int[length];
int i;
for (i = 0; i < toPad.length; i++)
returnArray[i] = toPad[i];
for (int j = i; j < returnArray.length; j++)
returnArray[j] = 0;
return returnArray;
}
它不会删除前导零,我会把它留给你。我现在做不了所有的工作,我可以吗?
“我的程序发疯了” - 不,它没有。它根据您提供的说明进行完全合乎逻辑的事情。因为它是*程序*。如果你需要帮助,你需要告诉我们它正在做什么,确切地说。即你得到的是什么,而不是你想要的输出? – drewmoore 2014-11-02 23:07:43
这看起来很复杂。为什么不将数组转换为整数,然后添加它们? – Michael 2014-11-02 23:08:35
re:“为什么不将数组转换为整数”。这是一个相当不错的股票作业问题。输入可以是一个长度,所以你不能认为这些数字会适合一个int(或者一个长的偶数,大多数的职业将会有一个特定的测试用例)。如果是家庭作业,只要使用BigInteger类,虽然它会打败这一点。 – 2014-11-02 23:14:31