2013-04-21 39 views
0

下面的代码给出了问题,我只需要将字符串中的字母转换为字符,并且当我运行我的测试时,当代码变为char c = t.charAt(0);时,我不断收到错误。确切的错误消息是:将字符串转换为char时的StringIndexOutOfBoundsException。可能的原因?

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0

我不能让它只是把字母串到一个char。任何提示将非常感谢。

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++; 
    } 
} 
+2

sooo,有什么错误? – 2013-04-21 01:11:32

+2

你用来获得僵尸的分割看起来不太有用。让我看看 - 那个错误表明它等于空字符串。你怎么看? – duffymo 2013-04-21 01:12:30

+0

“t”可能是空字符串。 @duffymo我认为他正试图将这些字符串分成单个字符或许? – KyelJmD 2013-04-21 01:13:44

回答

0

既然它说“字符串索引超出范围0”,那么你的字符串中没有字符。可能与你告诉String.split()在空字符串上拆分时有关系,因为它需要一个字符串分隔符来分割。

3

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

为了解决这个你可以代替分裂( “”)的操作与toCharArray(),这将直接产生字符数组:

char[] zombies = zombieString.toCharArray();