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