2016-07-05 77 views
-2

我的代码中有一个问题,我要求查找字符串中字符的出现次数,但我一直有一个Exception错误,而且我没有知道为什么?这是我的代码:查找字符串中出现字符的次数

import java.io.IOException; 
import java.util.*; 
import java.lang.*; 

public class LabOne1 { 

    public static void main(String[] args) throws IOException { 

    Scanner scan = new Scanner(System.in); 

    System.out.print("Enter a string: "); 
    String strUser = scan.next().toLowerCase(); 

    System.out.print("Enter a character: "); 
    char charUser = (char) System.in.read(); 
    Character.toLowerCase(charUser); 

    System.out.print(charUser + "occurs " + count(strUser, charUser) + 
      " times in the string " + strUser); 
    } 

    public static int count(String str, char a){ 

    int counter = 0; 

    for(int i = 0; i <= str.length(); i++){ 
     if (str.charAt(i) == a){ 

      counter++; 
     } 
    } 

    return counter; 
    } 
} 
+1

我们不是一个调试服务。一旦你找到问题代码,问一个*特定*问题。 – Li357

+1

我们不知道为什么你会收到例外。我们也不知道您得到的例外情况,或者您生成的代码中的哪些位置,或者您输入的输入内容,或者您​​未提供给我们的任何其他信息。 – azurefrog

+1

他们的意思是,请包括您询问的异常的堆栈跟踪。 – erickson

回答

3

您的字符串索引不正确。有效索引在0之间(包括0和0),并且不包括str.length()你的循环能像这样工作:

for(int i = 0; i < str.length(); i++) { 
    if (str.charAt(i) == a) counter++; 
} 

或者,你可以做这样的事情:

int count = Math.toIntExact(str.chars().filter(ch -> ch == a).count()); 
+0

非常感谢你,它的工作,并且确实我的索引超过了字符串的长度。 –

相关问题