2016-03-06 54 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)

相关问题