更改java中的数字位置

时间:2015-12-10 18:50:38

标签: java arrays eclipse

任何人都可以请您了解如何将此号码5486更改为4568?我需要改变两对数字的位置。有什么想法吗?

我的代码:

    public Number shiftRight(int n) {
        int length = (getNumOfDigits()+MINUSONE);
        length = (int) Math.pow(TEN, length);
        for (int i=0; i<n; i++){
            int m=num%TEN;
            num=(m*length) + (num/TEN);
        }
        return new Number(num);
    }

    public int shiftRightDistance(Number other){
        int max = getNumOfDigits();
        for (int i=0;i<max;i++)
        {
            if(compareTo(shiftRight(i))==ZERO)
            {
                return i;
            }

        }
        return MINUSONE;
    }
    public Number swapPairs() {

    } 
}

1 个答案:

答案 0 :(得分:0)

最简单(也是最不容易混淆)的事情可能是将数字转换为char数组,交换字符对,然后转换回数字。您可以使用String.valueOf(int)String.toCharArray()new String(char[])Integer.valueOf(String)将它们组合在一起。

或者,您可以构建以下方法,即交换小于100的非负数的数字:

private int swapDigitsLessThan100(int n) {
    return 10 * (n % 10) + n / 10;
}

构建的方法是从递归方式中提取原始数字中的每对数字。以下处理长数字偶数的数字:

public int swapDigits(int n) {
    if (n == 0) {
        return 0;
    return 100 * swapDigits(n / 100) + swapDigitsLessThan100(n % 100);
}

使用此代码,如果n是奇数位数,则结果将使用前导0作为附加数字。