1. 程式人生 > >有符號整數翻轉問題----注意溢位的問題

有符號整數翻轉問題----注意溢位的問題

一個整數翻轉問題需要注意溢位的地方描述:其實就是將一個有符號的32位整數進行翻轉,例如:123-->321, 120-->21,-123-->-321這種,其實思路很簡單,就是用模運算一步一步的將每一位取出,不斷的乘10,直至模運算取出的數是0package TestDemo;import java.util.*;public class Test1 {public static void main(String[] args){           Scanner in = new Scanner(System.in);int x = in.nextInt();int y = reverse(x);           System.out.println(y);in.close();     }static int reverse(int x){int number = 0;while(x != 0){int z = x % 10;int
newnumber = number * 10 + z;if((newnumber -z)/ 10 != number ){return 0;                      //在這裡因為 int的最大值為2147483647                }                             // 當 2147483640 + 9/8的時候就發生了溢位number = newnumber;x = x/10;           }return number;     }}需要注意的地方就是高亮的那個地方,因為可能產生溢位,所以需要進行判斷,當溢位的時候新的值與原來值不相等了就。有人說從數學的角度來說用減法來判斷不好,改成if(newnumber/10 == number){}這樣更好,不太懂,不過效果一樣