[問題] 如何在字串中讀取字元

作者: MAIDic (咩滴可)   2015-10-21 22:35:21
剛剛寫到一題
題目會給好幾串英數字
"1A3B4S\n"
"4X1b1X\n"
" ......."
然後要輸出
"ABBBSSSS\n"
"XXXXbX\n "
"....... "
只是我不知道要怎麼單獨去讀取個別的字串出來運算
上網查了一下好像是用charAt();
先寫了下面的程式碼測試
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
for(int i=0;i<132;i++) \\每一列不會超過132個字元
{
int num = str1.charAt(2*i);
System.out.print(num);
}
但是他卻顯示
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String
index out of range: 4
4850 at java.lang.String.charAt(String.java:658)
請問是哪裡出問題了呢?
作者: LPH66 (-6.2598534e+18f)   2015-10-21 22:55:00
你知道這個錯誤訊息是什麼意思嗎?
作者: Dnight (暗夜)   2015-10-21 23:00:00
簡單的說,你的字串如果只有3,charAt的有效範圍就是0,1,2你想想看嘛,才三個字你跟他要charAt(5)他要給你什麼?當然是阿殺力的報錯給你看阿
作者: MAIDic (咩滴可)   2015-10-21 23:06:00
那請問要怎麼改呢 現在毫無頭緒啊先把字串填滿0嗎?
作者: LPH66 (-6.2598534e+18f)   2015-10-21 23:42:00
你要知道你的字串有多長
作者: MAIDic (咩滴可)   2015-10-22 00:28:00
輸入的字串沒有固定長度@@
作者: nhlsi (綠茶)   2015-10-22 00:31:00
那就先判斷字串長度
作者: LPH66 (-6.2598534e+18f)   2015-10-22 02:07:00
不是預先知道, 是輸入之後去看看它有多長
作者: kina (瑪利亞遞毛巾)   2015-10-22 02:46:00
給你幾個類別方法String.tochararray String.length character.isdigit
作者: Dnight (暗夜)   2015-10-22 08:23:00
strl.length()應該有幫助
作者: dou0228 (7777)   2015-10-22 08:58:00
JFlex 表示:
作者: gmoz ( This can't do that. )   2015-10-22 15:31:00
i < str1.length()
作者: MAIDic (咩滴可)   2015-10-22 17:38:00
感謝各位 可是還有個問題就是他讀的是char變成int 的話數字會跑掉變成acsii 的形式
作者: LPH66 (-6.2598534e+18f)   2015-10-22 19:49:00
這個問題因為不清楚你的程度到哪裡不太好教理論上應該要講 String.valueOf()不過看你這題目好像只有一位數, 那這個比較不那麼直覺的(int)(ch - '0') 也是可以用啊, 不是 String.valueOf, 是 Integer.parseInt 才對之所以在這裡講 parseInt 怪怪的是因為它吃 String這代表要嘛你要用 String.substring 切子字串要嘛你得把那個 char 變成一個長一個字的 String不管走這三條路的哪一條都會讓你多花一點時間理解應用...
作者: dreamnook (亞龍)   2015-10-23 19:02:00
每一列不會超過132字元 你i>66 2*i就爆炸了
作者: wtao (淘)   2015-10-25 18:11:00
scanner 很好用 可以去找找範例
作者: adern9 (adern9)   2015-10-30 02:18:00
今天大家好友善喔
作者: zephyrhymn   2015-10-30 22:33:00
哈 平常應該是會被砲的問題XD

Links booklink

Contact Us: admin [ a t ] ucptt.com