---
# System prepended metadata

title: Java_Cmoney_st104
tags: [Cmoney_Java題目]

---

---
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;
    }
}
```