减去数组中表示的两个整数

时间:2018-03-23 03:15:28

标签: java arrays subtraction

我试图减去两个放入数组的数字(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以便我可以在某个地方减去,等等

非常感谢任何提示/帮助

2 个答案:

答案 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

看看是否有帮助!