0

下面的代码给出了问题,我只需要将字符串中的字母转换为字符,当我运行测试时,当代码到达时我不断收到错误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++;
    }
}
4

3 回答 3

3

你的 split("") 返回一个空字符串,如果你在一个空字符串上调用 charAt(0) 它会给出这个错误。

为了解决这个问题,你可以用 toCharArray() 替换 split("") 操作,这将直接生成一个字符数组:

char[] zombies = zombieString.toCharArray();
于 2013-04-21T01:16:13.060 回答
0

由于它说“字符串索引超出范围 0”,那么您的字符串中没有字符。可能与您告诉 String.split() 在空字符串上拆分这一事实有关,当它需要一个要拆分的字符串分隔符时。

于 2013-04-21T01:14:08.403 回答
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].).
于 2013-04-21T01:21:25.297 回答