2016-02-05 235 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++){