Java 如何打印出字符串的所有子字符串?

Java 如何打印出字符串的所有子字符串?,java,loops,substring,Java,Loops,Substring,我四处搜索,在任何地方都找不到这个问题 我花了一些时间试图使它与两个循环一起工作,但不能。我对任何更短更优雅的东西都感兴趣。这是一个练习,但不是一个家庭作业问题,正如标题所说,我应该保持简单,即没有数组/列表/哈希等 我迄今为止的工作: String str = "string"; String subString; int k = 1; while (k <= str.length()) { for (int i = 0; i <

我四处搜索,在任何地方都找不到这个问题 我花了一些时间试图使它与两个循环一起工作,但不能。我对任何更短更优雅的东西都感兴趣。这是一个练习,但不是一个家庭作业问题,正如标题所说,我应该保持简单,即没有数组/列表/哈希等

我迄今为止的工作:

    String str = "string";
    String subString;
    int k = 1;

    while (k <= str.length()) {

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

            for (int j = i+1; j <= str.length(); j++) {

                subString = str.substring(i,j);

                if (subString.length()==k) {System.out.println(subString);}

            }               
        }

        k++;

    }
String str=“String”;
字符串子串;
int k=1;

而(k不需要3个循环,每次检查子串大小:

for(int i=0;i对于(int k=1;k+i您只需要2个嵌套循环,而不是3个。您不需要同时使用
k
j

String str = "string";
for (int i = 0; i < str.length(); i++) {
    for (int j = i + 1; j <= str.length(); j++) {
        System.out.println(str.substring(i, j));
    }               
}

我看到了两个类似的答案,但这一个应该具有与原始3循环版本相同的输出:

String str = "string";
String subString;
for (int k = 1; k <= str.length(); k++) {
    for (int i = 0; i+k <= str.length(); i++) {
        subString = str.substring(i,i+k);
        System.out.println(subString);
    }               
}
String str=“String”;
字符串子串;

对于(int k=1;k,你想用子字符串做什么?你的两个最内部循环(在
i
j
上)中的逻辑实际上看起来是正确的。如果你只是打印出
substring
,你就已经覆盖了每个子字符串。
s
st
str
stri
strin
string
t
tr
tri
trin
tring
r
ri
rin
ring
i
in
ing
n
ng
g
String str = "string";
String subString;
for (int k = 1; k <= str.length(); k++) {
    for (int i = 0; i+k <= str.length(); i++) {
        subString = str.substring(i,i+k);
        System.out.println(subString);
    }               
}