java 查找字符串中字符的出现次数[已解决]

luaexgnf  于 2023-02-15  发布在  Java
关注(0)|答案(1)|浏览(149)

我的代码中有一个问题,我要求查找字符串中字符出现的次数,但我一直有一个异常错误,我不知道为什么?以下是我的代码:

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;
  }
}

更新:问题出在循环中,因为迭代器应该大于零,而不是等于或大于零。

for(int i = 0; i < str.length(); i++)
qv7cva1a

qv7cva1a1#

您的字符串索引不正确。有效索引介于0(包括0)和str.length()(不包括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());

相关问题