最初的問題在我花時間編寫代碼並創建我自己的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