12. Rotating Sentences (CPE21914, UVA490) - CPE一顆星解答與說明

   👉  CPE 一顆星選集列表(49題) 題目說明與解答

CPE一顆星49題解答 - pdf 電子檔,售價 199 元,

購買電子檔可將筆記與完整解答帶著走,

坐車、上課時皆可隨時複習,

不受網路或廣告影響,

若有需要請來信購買 greens2314@gmail.com


題目

上傳進度:已上傳 91725 個位元組 (共 91725 個位元組)。


  • 將文字順時針方向旋轉 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() 方法,將句子存進串列

找最長的句子在哪裡,包含幾個字

  • 找出哪一句最長,最多包含幾個字
    • 字串長度,呼叫 String 類別提供的 length() 方法
  • 句子數量,呼叫 List 類別提供的 size() 方法


句子索引位置從 0 開始


使用雙層 for 迴圈讀取

  • 第一層:字元位置,從 0 開始遞增,直到最長的字串長度 -1 為止
  • 第二層:句子位置,從最後一句開始,逐次遞減,直到第一句(索引0)為止
  • 例如: 讀取第一層 for 迴圈的字元,從字元位置 0
    • 讀取第二層 for 迴圈的句子,從最後一句,也就是第 3 句開始逐次遞減
      • 印出第 3 句(索引2)的位置
      • 印出第 2 句(索引1)的位置  
      • 印出第 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

CPE一顆星49題解答 - pdf 電子檔,售價 199 元,

購買電子檔可將筆記與完整解答帶著走,

坐車、上課時皆可隨時複習,

不受網路或廣告影響,

若有需要請來信購買 greens2314@gmail.com

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明