有个整数1234,写个方法将其反转结果为4321(如果是1230,结果为321),考虑负数

解决方案 »

  1.   

    import java.util.*;public class Test {
    public static void main(String[] args) {
    Stack<Integer> stack = new Stack<Integer>();
    int n = -12340;
    boolean negative = false;

    // n为n的绝对值, 记录下n的符号
    if (n < 0) {
    n = -n;
    negative = true;
    }

    // 去掉后面的 0
    int temp;
    do {
    temp = n % 10;
    if (temp != 0) {
    break;
    }
    n /= 10;
    } while (true);

    // 取得每位数字, 因为是逆序的, 所以使用栈来处理.
    while (n != 0) {
    int m = n % 10;
    stack.push(m);
    n /= 10;
    }

    // 把数字构造成一个字符串, 输出来好看点.
    StringBuilder sb = new StringBuilder();
    for (int i : stack) {
    sb.append(i);
    }

    // 如果是负数, 把负号加进去, 如果要加在后面, 使用sb.append('-')就可以了.
    if (negative) {
    sb.insert(0, '-');
    }
    System.out.println(sb.toString());
    }
    }
      

  2.   


    public static int reverse(int origin) {
    if (origin > -10 && origin <10) {
        return origin;
    }
    boolean isNegative = origin < 0;
    if (isNegative) {
        origin = -origin;
    }
    String strVal = String.valueOf(origin);
    char[] originArr = strVal.toCharArray();
    int len = originArr.length;
    char[] reverseArr = new char[len];
    for (int i = 0; i < len; i++) {
        reverseArr[i] = originArr[len-i-1];
    }
    String reverseStr = new String(reverseArr);
    if (isNegative) {
        reverseStr = "-" + reverseStr;
    }
    return Integer.parseInt(reverseStr);
        }
      

  3.   

    public class NumberTest {    public static void main(String[] args) {
            System.out.println(reverse(12345));
            System.out.println(reverse(-12345));
            System.out.println(reverse(-1));
            System.out.println(reverse(Integer.MAX_VALUE));  // overflow
            System.out.println(reverse(Integer.MIN_VALUE));  // overflow
        }
        
        public static int reverse(int num) {
            int result = 0;
            while(num != 0) {
                result = result * 10 + num % 10;
                num /= 10;
            }
            return result;
        }
    }
      

  4.   

        public static int reverse(int num) { 
            int result = 0; 
            while(num != 0) { 
                result = result * 10 + num % 10; 
                num /= 10; 
            } 
            return result; 
        } 
    看了果子大神的代码 看样子不一定非得靠操作String来完成啊..
      

  5.   

    自己弄了个,供参考
    public static String reserve(int i){
    if(i==0) {
    return "0";
    }else if(i>0){
    StringBuffer sb = new StringBuffer(String.valueOf(i));
    return sb.reverse().toString().replaceFirst("[0]+", "");
    }else{
    StringBuffer sb = new StringBuffer(String.valueOf(Math.abs(i)));
    return "-"+sb.reverse().toString().replaceFirst("[0]+", "");
    }
    }
      

  6.   

    题目有没有限制说不能使用现成的方法?如果没有,那就很简单,不用这么多麻烦的步骤啊。
    public static int intReverse(int source)throws NumberFormatException{
       String a = "";
       StringBuffer buffer = new StringBuffer(new Integer(source));
       if(source<0){
          source = Math.abs(source);
          a = "-";
       }
       return Integer.parseInt(a+buffer.reverse().toString());
    }
      

  7.   

    算法是这样实现的,但是反转后超出了int的范围怎么办呢?
      

  8.   

    算法是这样的,但是超出了int的范围怎么办呢?