这是较长编码挑战的一部分 - 一部分涉及“翻转”输入数字的数字(即1234变为4321)并删除前导零(如果适用)。
下面,我编写了flipOpp方法来完成此任务。大多数时候,它完美地运作。但有时候,我收到一个错误,因为最后一个数字变成破折号(“ - ”),显然,如果其中一个数字是破折号,那么Integer.parseInt()方法将无效!
任何可能导致此问题的想法?另外,是否有更简单的方法来翻转int的数字?我现在使用的方法看起来效率不高 - 将int转换为String,然后转换为字符数组,操作此数组的字符,将其转换回String,最后返回int。 / p>
谢谢!此方法的代码如下:
// third operation: reverse the digits and remove leading zeros
public static int flipOpp(int num){
char temp;
// change int to a String
String stringNum = Integer.toString(num);
// change String to a char array of digits
char[] charNum = stringNum.toCharArray();
// flip each character and store using a char temp variable
for (int i=0;i<charNum.length/2;i++){
temp = charNum[i];
charNum[i]=charNum[charNum.length-i-1];
charNum[charNum.length-i-1]=temp;
}
// turn flipped char array back to String, then to an int
// this process removes leading zeros by default
String flipString = new String(charNum);
if (flipString.length()<7){
int flipInt = Integer.parseInt(flipString);
return flipInt;
}
else return 0;
}
答案 0 :(得分:0)
任何可能导致此问题的想法?
绝对听起来像负数
是否有更简单的方法来翻转int的数字?我现在使用的方法看起来效率不高
将其保留为整数。不要担心否定
ICompositionRoot
例如,-50,
public static int flipOpp(int num) {
int reversed = 0;
while (num!=0) {
reversed = reversed*10 + num%10;
num /= 10;
}
return reversed;
}