将字符串转换为char时的StringIndexOutOfBoundsException。可能的原因?

时间:2013-04-21 01:10:20

标签: java

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

3 个答案:

答案 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].).