作者MAIDic (咩滴可)
看板java
標題[問題] 如何在字串中讀取字元
時間Wed Oct 21 22:35:21 2015
剛剛寫到一題
題目會給好幾串英數字
"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)
請問是哪裡出問題了呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.23.175
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1445438123.A.5F8.html
1F:推 LPH66: 你知道這個錯誤訊息是什麼意思嗎? 10/21 22:55
2F:推 Dnight: 簡單的說,你的字串如果只有3,charAt的有效範圍就是0,1,2 10/21 23:00
3F:→ Dnight: 你想想看嘛,才三個字你跟他要charAt(5)他要給你什麼? 10/21 23:00
4F:→ Dnight: 當然是阿殺力的報錯給你看阿 10/21 23:01
5F:→ MAIDic: 那請問要怎麼改呢 現在毫無頭緒啊 10/21 23:06
6F:→ MAIDic: 先把字串填滿0嗎? 10/21 23:07
7F:推 LPH66: 你要知道你的字串有多長 10/21 23:42
8F:→ MAIDic: 輸入的字串沒有固定長度@@ 10/22 00:28
9F:→ nhlsi: 那就先判斷字串長度 10/22 00:31
10F:推 LPH66: 不是預先知道, 是輸入之後去看看它有多長 10/22 02:07
11F:推 kina: 給你幾個類別方法 10/22 02:46
12F:推 kina: String.tochararray String.length character.isdigit 10/22 02:49
13F:推 Dnight: strl.length()應該有幫助 10/22 08:23
14F:→ dou0228: JFlex 表示: 10/22 08:58
15F:推 gmoz: i < str1.length() 10/22 15:31
16F:→ MAIDic: 感謝各位 可是還有個問題就是他讀的是char 10/22 17:38
17F:→ MAIDic: 變成int 的話數字會跑掉 10/22 17:39
18F:→ MAIDic: 變成acsii 的形式 10/22 17:40
19F:推 LPH66: 這個問題因為不清楚你的程度到哪裡不太好教 10/22 19:49
20F:→ LPH66: 理論上應該要講 String.valueOf() 10/22 19:49
21F:→ LPH66: 不過看你這題目好像只有一位數, 那這個比較不那麼直覺的 10/22 19:50
22F:→ LPH66: (int)(ch - '0') 也是可以用 10/22 19:50
23F:→ LPH66: 啊, 不是 String.valueOf, 是 Integer.parseInt 才對 10/22 19:51
24F:→ LPH66: 之所以在這裡講 parseInt 怪怪的是因為它吃 String 10/22 19:53
25F:→ LPH66: 這代表要嘛你要用 String.substring 切子字串 10/22 19:53
26F:→ LPH66: 要嘛你得把那個 char 變成一個長一個字的 String 10/22 19:53
27F:→ LPH66: 不管走這三條路的哪一條都會讓你多花一點時間理解應用... 10/22 19:54
28F:推 dreamnook: 每一列不會超過132字元 你i>66 2*i就爆炸了 10/23 19:02
29F:推 wtao: scanner 很好用 可以去找找範例 10/25 18:11
30F:推 adern9: 今天大家好友善喔 10/30 02:18
31F:推 zephyrhymn: 哈 平常應該是會被砲的問題XD 10/30 22:33