2016-02-05 246 views
-1

给定一个字符串,打印字符串中存在的字母数目。 输入: 输入的第一行包含一个表示测试用例数量的整数T. T测试用例的描述如下。每个测试用例都包含一个字符串。输出: 打印字符串中存在的字母数量。这里ArrayIndexoutofBoundsException是什么意思?

这是一个问题,我一直在eclipse上解决这个问题,但它一直在我的代码的第7行抛出ArrayIndexoutOfBoundsException。我试着理解我做错了什么,但我一直没能做到。 有人可以解释这里有什么错。我附上了代码。

public class solution { 
    public static void main(String[] args){ 
     String s = "baibiasbfi" ; 
     int count =0; 
     for(int i=0;i<=s.length();i++){ 
      char[] a= s.toCharArray(); 
      if(a[i]>='a'&& a[i]<='z'||a[i]>='A'&&a[i]<='Z') 
       count++;} 
    System.out.println(count); 
    } 
} 
+1

避免此异常使用I Vaseph

+0

基本上什么ArrayIndexOutOfBoundsException异常的意思是,你要访问您的阵列的位置'了'那超出了访问。 在这种情况下,您的字符串'baibiasbfi'有10个字符,这意味着您可以从位置0到9访问它。 当您在执行'i <= s.length()'和's'时。长度“等于数组10的大小,则您正试图访问超出范围的数组的位置10。 为了解决这个问题,从条件'i <= s.length()'中移除'=',你就可以解决你的问题了。 – aribeiro

+0

谢谢..帮助 – jenygeorge

回答

0
i <= s.length(); 

for loop应该是:

i < s.length(); 

ArrayIndexOutOfBoundsException抛出:

,以表明数组已用非法 索引访问。该索引或者是负值,或者大于或等于该阵列的大小 。

+0

非常感谢你............它的工作。 – jenygeorge

0

在java中,数组从0length-1。您正在使用您的循环与i<=s.length()进行比较。这意味着你的循环正在回馈数组的长度。这给出ArrayIndexoutofBoundsException

替换你的循环:

for(int i=0;i<s.length();i++){