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 –