2016-03-06 57 views
1
import java.util.Scanner; 

public class lettercounter { 

    public static void main(String[] args) { 

     Scanner lettercounter = new Scanner(System.in); 
     System.out.println("Enter your sentence > "); 
     String sentence = lettercounter.nextLine(); 

     int length = sentence.length(); 

     System.out.println("what letter do you seek? > "); 
     String letters = lettercounter.nextLine(); 

     char letter = letters.charAt(0); 
     int counter = 0; 

     for (int i = 0; i < length + 1; i++) { 
      char digit = sentence.charAt(i); 
      if (Character.toString(digit).matches(Character.toString(letter))) { 
       counter++; 
      } 
     } 

     System.out.println("Number of '" + letter + "'s found >" + counter + ""); 
    } 
} 

什麼是錯誤的代碼?我嘗試這樣做,但似乎有一個錯誤,當我運行它:它說 xception在線程「主」java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:4 在java.lang.String.charAt(未知來源) at lettercounter.main(lettercounter.java:15)「找字符」代碼找到一個字中的字母數量

+2

'我<長度+ 1'應該是'我<長度'。 –

+0

由於某種原因,似乎已經解決了錯誤? –

+1

此外,你可以使用'數字==字母',而不是'Character.toString(digit).matches(Character.toString(letter))' –

回答

1

i<length+1應該是i<length

這解決了問題,因爲字符串中只有length個字符,可通過sentence.charAt(0)直至sentence.charAt(length - 1)訪問。您正嘗試訪問另一個字符 - sentence.charAt(length)

相關問題