在java中查找大小为n的字符串的所有子字符串

问题描述 投票:-3回答:2

这是我的代码

import java.util.*;
public class String3 {

    public static void main(String[] args)throws IndexOutOfBoundsException {
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        int l=sc.nextInt();
        for(int i=0;i<=s.length();i++) {
            System.out.println(s.substring(i,i+l));
        }
    }
 }

我收到这些错误

java.lang.StringIndexOutOfBoundsException:
begin 6, end 9, length 8    at
java.base/java.lang.String.checkBoundsBeginEnd(Unknown Source)  at
java.base/java.lang.String.substring(Unknown Source)    at
String3.main(String3.java:9)
java string
2个回答
1
投票

将您的代码更改为

Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
int len=sc.nextInt();
for(int i=0;i<=s.length() - len;i++) {
    System.out.println(s.substring(i,i+len));
}

-1
投票

错误说,

begin 6, end 9, length 8 

这意味着您正在尝试访问长度仅为8的字符串的存根串(6到9)。

length()方法返回实际长度而不是0索引长度(在开头可能会混淆)

因此,在你的for循环中将<=更改为<应该可以修复它。

© www.soinside.com 2019 - 2024. All rights reserved.