12. Rotating Sentences (CPE21914, UVA490) - CPE一顆星解答與說明
CPE一顆星49題解答 - pdf 電子檔,售價 199 元,
購買電子檔可將筆記與完整解答帶著走,
坐車、上課時皆可隨時複習,
不受網路或廣告影響,
若有需要請來信購買 greens2314@gmail.com
題目
- 將文字順時針方向旋轉 90 度
- 將原本由左到右,由上到下的句子
- 輸出成由上到下,由右到左
輸入說明
- 輸入最多不會超過 100 句
- 每句不超過 100 個字
- 含數字、大小寫字母、空白、符號
- 不包含 tab 鍵
輸出說明
- 最左列垂直出現最後一句
- 最右列出現第一句
解題技巧
- 使用串列儲存句子,可動態知道句子目前的數量
- 紀錄最長的句子,可知道最長有幾個字
- 使用雙層 for 迴圈處理句子與字元的顯示
解題過程
取得輸入
- 使用 while 迴圈與 scanner.hasNextLine(),偵測是否有測試資料
- 當測試資料輸入時
- 使用 scanner.nextLine() 取得整行句子
儲存資料
- 使用串列儲存多筆(1~100)句子,串列不用事先指定串列大小,方便新增/刪除資料
- List<String> list = new ArrayList<String>();
- ArrayList<String> list = new ArrayList<String>();
- 兩個寫法都可以
- 呼叫 List 類別提供 add() 方法,將句子存進串列
句子索引位置從 0 開始
- 第一層:字元位置,從 0 開始遞增,直到最長的字串長度 -1 為止
- 第二層:句子位置,從最後一句開始,逐次遞減,直到第一句(索引0)為止
- 例如: 讀取第一層 for 迴圈的字元,從字元位置 0
- 讀取第二層 for 迴圈的句子,從最後一句,也就是第 3 句開始逐次遞減
- 印出第 3 句(索引2)的位置 0
- 印出第 2 句(索引1)的位置 0
- 印出第 1 句(索引0)的位置 0
- 換行
第一層 for 迴圈
- 產生字元位置,從 0 開始遞增,直到最長的字串長度為止
- 印出換行
第二層 for 迴圈
- 產生句子的索引位置
- 從最後一句開始,呼叫 List 類別提供的 size() 方法,減 1 就是最後一句的索引位置,逐次遞減
- 直到第一句 (索引位置 0 ) 為止
輸出字元
- 判斷想讀取的字元位置是否小於特定句子的長度
- 例如:最後一句是 " ccc cc" 字串長度 = 8
- 當 letterIndex = 0, 1 , 2 , 3 , 4 , 5 , 6 , 7 時皆小於句子長度 8,則印出字元
- 串列中某一特定句子,可呼叫 List 類別的 get() 方法
- 當 字元位置 小於 句子長度
- 可使用 String 類別提供的 charAt() 方法讀取特定位置的字元
- 將字元印出
- 補充說明:當字元位置 大於等於 特定句子長度,則無法讀取特定位置的字元
- 判斷目前的句子位置是否 大於 最長句子的位置
- 最長句子 " bb bbbb bb" 索引位置是 1
- 目前處理的句子是 " ccc cc" 索引位置是 2
- 2 > 1,當字元位置大於句子長度時,該位置無資料,需補上空白
- 例如,當字元位置 = 8 9 10 11 時
- 因該句字元索引只到 7,無法讀取字元位置 = 8 9 10 11
- 強行讀取會遇到 StringIndexOutOfBoundsException
留言
張貼留言