👉 CPE 一顆星選集列表(49題) 題目說明與解答
題目
輸入說明
- 有一筆測試資料,是編碼(encoded)過後的訊息
- 其中包含一個或多個單字
輸出說明
- 將解碼後的文字輸出
- 在標準鍵盤(standard keyboard)上,找到該測試資料的字母(letter)或標點符號(punctuation symbol),並取代成鍵盤上左邊第二個的字母
解題技巧
- 注意鍵盤上的英文與符號的按鍵位置與順序,尤其是最左邊往前推會讀取上一排的最後面
- 觀察「 ` 1」 符號左移後的變化,題目並沒有講
- 透過瘋狂程設的自訂測資 觀察 「 ` 1」符號解碼的結果,發現每次「 ` 」解碼結果都太一樣
- 官方的程式碼,沒有處理「位置 減 2 小於 0 的問題」
解題過程
取得者輸入
- 使用 while 迴圈與 scanner.hasNextLine(),偵測使用者是否有輸入資料
- 當使用者輸入資料時
- 使用 scanner.nextLine() 取得整行句子
- 使用 String 類別本身提供的 toLowerCase() 方法,將句子轉成小寫
- 將鍵盤文字拉平,建立標準鍵盤的所有文字,從左上的「 ` 」符號開始,由左而右,由上而下,一直打到 「 / 」符號結束
- 遇到反斜線 「 \」 ,要打成 「 \\」
- 跳脫字元 Escape Sequence
- 使用字串時,有一些特殊字元無法表示,需使用「\」,來表達特殊字元
- 使用 for 迴圈,產生從第一個 ~ 最後一個字元的位置
- 使用 String 類別提供的 charAt() 方法來取得句子中的每一個字元
- 先找出句子中的字元,位於標準鍵盤字串中的哪個位置,使用 String 類別提供的 indexOf() 方法,會指出該字元的開始位置。如果沒有找到則返回 -1
- 有找到字元在標準鍵盤字串中的位置:使用 charAt() 方法,讀取「字元位置 - 2 」的字元
- 沒有找到字元在標準鍵盤字串中的位置:直接將字元印出,例如空白
留言
張貼留言