--- tags: Cmoney_Java題目 --- Java_Cmoney_st104 === ![](https://i.imgur.com/dldW413.png) ![](https://i.imgur.com/ZTJpvCv.png) 1.需要的 function --- 1.1 反轉 function --- 這裡不能常用套路(把字串變成字元陣列`sting.toCharArray();`), 因為要印出 0 的特殊範圍,要數字的性質來判斷,所以要用保留數字性質的方法。 1. 因為反轉後的數字可能超過,所以變數為 long rev 2. 持續將原始的數字除十,獲取個位數 3. 持續將反轉數字乘十,將剛剛獲取的個位數往上推 4. 當除到變0(變成小數,無條件省去) ```java= public static long reverse(int ori) { long rev = 0; while (ori != 0) { int d = ori % 10; rev = rev * 10 + d; ori /= 10; } return rev; } ``` 2.主程式 --- 先判斷反轉數字是不是超過範圍,如果是印0 ==突然發現,這個反轉 function 可以直接處理負數問題,不用特別處理負數== ```java= public static void main(String[] args) { Scanner sc = new Scanner(System.in); int ori = sc.nextInt(); if (reverse(ori) > 2147483647 || reverse(ori)< -2147483648) System.out.println(0); else System.out.println(reverse(ori)); } ``` 3.完整程式 --- ```java= import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int ori = sc.nextInt(); if (reverse(ori) > 2147483647 || reverse(ori)< -2147483648) System.out.println(0); else System.out.println(reverse(ori)); } public static long reverse(int ori) { long rev = 0; while (ori != 0) { int d = ori % 10; rev = rev * 10 + d; ori /= 10; } return rev; } } ```