# **APCS Oct 2023 - m370 [Q1](https://zerojudge.tw/ShowProblem?problemid=m370) [Java]** > **本題敘述:** > > 有n個位置上有食物,另外有一隻老鼠一開始位於位置x。 > 第一行包含兩個整數:x和n,以空格分隔。x代表老鼠的初始位置,n代表食物的數量。 > 第二行包含n個整數,以空格分隔,表示每個食物的位置,且不會與老鼠位置重疊。 > 所有測試資料皆保證3<=n<=20且n是奇數,老鼠與食物位置範圍均為-100到100。 ```java+= import java.util.Scanner; public class rat { public static void main(String[] args) { try (Scanner scanner = new Scanner(System.in)) { String userinput = scanner.nextLine(); String[] words = userinput.split(" "); int x = Integer.parseInt(words[0]); int n = Integer.parseInt(words[1]); String userinput2 = scanner.nextLine(); String[] points = userinput2.split(" "); int fct = 0; int bct = 0; int[] font = new int[n]; int[] back = new int[n]; if (n >= 3 && n <= 20) { if (n % 2 != 0) { for (int i = 0; i < n; i++) { int px = Integer.parseInt(points[i]); if (px <= 100 && px >= -100) { if (px > x) { font[fct] = px; fct = fct + 1; } else if (px < x) { back[bct] = px; bct = bct + 1; } } else { break; } } int num = x; if (bct > fct) { for (int i = 0; i < bct; i++) { if (back[i] < num) { num = back[i]; } } System.out.println(bct + " " + num); } else if (bct < fct) { for (int i = 0; i < fct; i++) { if (num < font[i]) { num = font[i]; } } System.out.println(fct + " " + num); } } } scanner.close(); } catch (Exception e) { System.out.print(e); } } } ``` 這是2023年的APCS考試,我用最老套的方法把條件一個一個弄上去,先偵測食物在老鼠的相對方向,並且同時計數食物的數量,之後再比較老鼠的相對位置食物的數量,並比較哪個距離老鼠最遠。 **本題知識:** * `java.util.Scanner` 等同於Python的Input,用 `String userinput = scanner.nextLine();`。 * 定義新東西需要在前方打上int或是String等等。 * `split(" ");` 用來切割**字串**。 * `int x = Integer.parseInt(words[0]);` 把String變成Int。 --- > [name=BlackInk7777]這是我第一個用Java寫的程式,我考APCS的時候用Python寫,因為用Java有點太花時間了, > 而且我在用Java寫的同時發現我自己考試時的代碼有錯誤,我忘記設條件了QQ。 - [✔️] 程式碼如果需要可以直接使用。 - [✔️] 分享貼文請標註來源。 ![成品](https://hackmd.io/_uploads/H1_0QNSMT.png)