Java - 使用String操作翻转整数偶尔会返回错误

时间:2017-06-18 16:48:47

标签: java string

这是较长编码挑战的一部分 - 一部分涉及“翻转”输入数字的数字(即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;

    }

1 个答案:

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