下面的代码给出了问题,我只需要将字符串中的字母转换成字符,当我运行测试时,代码到达char c = t.charAt(0);
时出现错误确切的错误消息是:
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0
我无法将字符串字母转换成字符。任何提示将不胜感激。
String[] zombies;
int num = 0;
Vector<Zombie> practice = new Vector<Zombie>();
String zombieString = "SZI1";
zombies = zombieString.split("");
for (String t : zombies) {
if (isNumeric(t)) {
int multiplier = Integer.parseInt(t);
String extraZombie = zombies[num - 1];
char x = extraZombie.charAt(0);
for (int i = 0; i <= multiplier; i++) {
Zombie zombie = Zombie.makeZombie(x);
practice.add(zombie);
}
} else {
char c = t.charAt(0);
//Zombie zombie = Zombie.makeZombie(c);
//practice.add(zombie);
num++;
}
}
答案 0 :(得分:3)
你的split(“”)返回一个空字符串,如果你在一个空字符串上调用charAt(0),它将给出这个错误。
要解决此问题,您可以使用toCharArray()替换split(“”)操作,这将直接生成一个chars数组:
char[] zombies = zombieString.toCharArray();
答案 1 :(得分:0)
由于它表示“字符串索引超出范围0”,因此您的字符串中没有字符。当你需要一个字符串分隔符来分割时,你可能会告诉String.split()拆分空字符串这一事实。
答案 2 :(得分:0)
<强>引强>
https://stackoverflow.com/a/5235439/2214674
"SZI1".toCharArray()
But if you need strings
"SZI1".split("")
Edit: which will return an empty first value (extra empty String => [, S, Z, I,1].).