任何人都可以请您了解如何将此号码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() {
}
}
答案 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作为附加数字。