0
我正在編寫一個程序,它可以實現筆和紙的複用。我使用了2個嵌套的for循環來遍歷long值的2d數組。我認爲將最後一個字符添加到工作區,然後添加第一個數字作爲進位。筆和紙複製
- 如何獲取它,以便在內循環完成執行時,它會在下一組數字的第一列中創建一個零。然後如果是第二次,添加兩個零等等,每次增加一個零的數量。當我得到這個工作時,我可以添加數組。
輸出:
84882000000000000000
26228000000000000000
92946000000000000000
68664000000000000000
代碼:
//set up temporary 2d array for working rowcount of array with be equal to length of numberTwo[]
long[][] workspaceArray = new long[numberTwo.length][20]; //columncount is arbitrary
long carry = 0;
//int u = 0;
//for every number in the bottom row
for (int i = numberTwo.length-1, rowNum = 0; i >= 0; i--, rowNum++){
for (int j = numberOne.length-1, columnNum = 0; j >= 0; j--, columnNum++){
//System.out.println("Multiplying: "+numberTwo[i]+" and "+numberOne[j]);
long value;
if (carry == 0){
value = numberTwo[i]*numberOne[j];
}else{
value = numberTwo[i]*numberOne[j]+carry;
}
//System.out.println("A "+value);
long numberForWorkspace = extractLast(value);
System.out.println("adding "+numberForWorkspace+" to the workspace at "+i+" "+j);
workspaceArray[rowNum][columnNum] = numberForWorkspace; //not lining up properly, pass j into func
//carry = extractAllButLast(value);
}
}
for (int k = 0; k < workspaceArray.length; k++){
for (int h = 0; h < workspaceArray[k].length; h++){
System.out.print(workspaceArray[k][h]);
}
System.out.println();
}
編輯以澄清
更新:我試圖做這樣說,但我似乎後得到索引越界異常我跑過幾個索引。
int numberOfZeros = 0;
for (int i = numberTwo.length-1, rowNum = 0; i >= 0; i--, rowNum+=numberOfZeros){
for (int j = numberOne.length-1, columnNum = 0; j >= 0; j--, columnNum++){
System.out.println("Multiplying: "+numberTwo[i]+" and "+numberOne[j]);
long value;
if (carry == 0){
value = numberTwo[i]*numberOne[j];
}else{
value = numberTwo[i]*numberOne[j]+carry;
}
//System.out.println("A "+value);
long numberForWorkspace = extractLast(value);
System.out.println("adding "+numberForWorkspace+" to the workspace at "+rowNum+" "+columnNum);
workspaceArray[rowNum][columnNum] = numberForWorkspace;
//carry = extractAllButLast(value);
}
numberOfZeros++;
更精確說明,內部的for循環已經執行了第一時間之後下一行我希望第一個值爲0,其他所有內容都添加到最後(不能用0覆蓋第一個索引)。然後對於第二行,我希望它在前面是兩個零,然後添加數字。 –
好吧,保持從0開始並在內循環結束時更新的循環迭代次數。在循環外取下一個數組,並根據需要添加多個0。然後你需要添加這個數字到你的其他索引 – saml
謝謝,試過了,更新了原始帖子,獲取了indexoutofbounds:E –