java - 将子字符串与 Java 中的字符串进行比较

标签 java if-statement comparison substring

所以基本上,用户输入 2 个字符串 (CATSATONTHEMAT AT),我们需要计算第二个字符串在第一个字符串中出现的次数(所以这里的答案是 3)

这就是我目前所拥有的,而且它一直在说

“线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:81223 在 java.lang.String.substring(未知来源) 在 practice.main(practice.java:60)"

任何帮助将不胜感激!我只是找不到我哪里出错了

    String s = scan.next(); // CATSATONTHEMAT
    String t = scan.next(); // AT

    int j= 0;

    for ( int i = 0 ; i < s.length(); i++){
        int k = t.length();
        String newstring = s.substring(i,i+k); // I printed this and the substring works so the if statement might not be working..

        if(newstring.equals(t))
            j++;   // if the new substring equal "AT" then add 1
        }

    System.out.printf("%d", j);  // suppose to print just 3

最佳答案

outOfBounds 异常发生在 i 接近 s 的末尾并且 k 使您通过了字符串的末尾时。

您需要将循环更改为仅上升到 s.length()-t.length()

for ( int i = 0 ; i < s.length()-t.length(); i++){

我还建议将 int k = t.length() 带出 for 循环。您不需要为每次迭代分配它,因为每次迭代都应该相同。

关于java - 将子字符串与 Java 中的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309109/

相关文章:

java - 简单的 Servlet 应用程序,在哪里存储我可以引用的配置设置?

java - 使用replaceAll()替换字符串中所有出现的字符

java - 为什么这个通用代码在 java 8 中编译?

python - 有没有办法检测循环是否在python中停止

java - 将 BigInteger 与 BigDecimal 进行比较

java - 安卓 : Unable to Access Function From Other Class (Service)

java - 在 if-else 中或在 if-else 之外调用方法

PHP:如何将时间字符串与日期 ('H:i' 进行比较)?

email - 匿名比较两个电子邮件地址列表

java - for while if 循环嵌套错误消息,如果没有找到