我试图减去两个放入数组的数字(Im减去数字,如532和67)
如此有效,这就是数组的样子
list a
index: 2 1 0
list: 5 3 2 <-- this is the first number
~~~~~~~~
list b
index: 1 0
list: 6 7 <-- this is the second number
~~~~~~~~~~
我遇到的麻烦是实施一种方式,以便你可以从下一个号码借来。
我的想法就像a[i+1]-1
一样让3降低到2
并添加a[i]+10
以便我可以在某个地方减去,等等
非常感谢任何提示/帮助
答案 0 :(得分:0)
试试这个,我认为它会解决您的问题并返回您的结果。另请告诉我这对您有用。
package test;
public class Test {
public static void main(String[] args) {
int firstNumber[]={1,9};
int secondNumber[]={8,0,8,9};
int result[];
boolean isNegativeResult =false;
Test test =new Test();
isNegativeResult=!test.isFirstGreater(firstNumber,secondNumber);
if(isNegativeResult){
result=test.subtract(secondNumber,firstNumber);
}else{
result=test.subtract(firstNumber,secondNumber);
}
System.out.print(isNegativeResult?"- ":"");
for(int index=result.length-1;index>=0;index--){
System.out.print(result[index]);
}
}
public int[] subtract(int[] firstNumber,int[] secondNumber){
int result[]=new int[firstNumber.length];
for(int index=0;index<firstNumber.length;index++){
if(index>secondNumber.length-1){
result[index]=firstNumber[index];
continue;
}
if(firstNumber[index]<secondNumber[index]){
for(int j=index+1;j<firstNumber.length;j++){
if(firstNumber[j]!=0){
firstNumber[j]=firstNumber[j]-1;
firstNumber[index]+=10;
break;
}else{
firstNumber[j]=9;
}
}
}
result[index]=firstNumber[index]-secondNumber[index];
}
return result;
}
public boolean isFirstGreater(int[] first,int[] second){
boolean result=true;
if(first.length<second.length){
result= false;
for(int index=second.length-1;index>=0;index--){
if(second[index]>0){
break;
}else{
if(index==(first.length-1) && first[index]<second[index]){
result= false;
break;
}
}
}
}else if(first.length==second.length){
for(int index=first.length-1;index>=0;index--){
if(first[index]<second[index]){
result= false;
break;
}else if(first[index]>second[index]){
result= true;
break;
}
}
}
return result;
}
}
答案 1 :(得分:-1)
你的方法可能有用,但它可能有点复杂,因为你将不得不继续检查你是否需要借用下一个数字。那么1001 - 99的情况如何,你将不得不借用很多次,而不仅仅是从一个地方借来。
您是否必须为此分配保留单个数组索引中的值?为什么不从数组中创建整数并正常减去它们。
例如,如果我有你说的话:
a[0] = 2
a[1] = 3
a[2] = 5
这应该是数字532,为什么不构造一些其他的int a = 532,然后使用简单的a-b?
我们如何构建int?好吧,考虑数字告诉你的是什么,他们告诉你每个数字的价值,首先是数字,数十,数百等。考虑这些替代方法来写532:
532 = 500 + 30 + 2
532 = 5*10^2 + 3*10^1 + 2*10^0
看看是否有帮助!