[问题] 如何在字串中读取字符

楼主: 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