我正在尝试编写一个打印输入字符串的所有子字符串的程序。例如,如果用户输入“rum”,则输出为:
r
u
m
ru
um
rum
import java.util.Scanner;
public class AllSubStrings
{
public static void main(String[]args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a string: ");
String str = in.next();
String sub = "";
for(int i=0; i<str.length(); i++)
{
for(int a=0; a<str.length() ; a++)
{
if(i+a+1>str.length())break;
sub = str.substring(a,i+a+1);
System.out.println(sub);
}
}
}
}
这个程序运作完美,但由于我们没有学习如何在课堂上使用“休息”,我正在寻找不同的东西。除了“休息”之外的任何想法都是受欢迎的。
提前致谢。
答案 0 :(得分:3)
您可以使用此while
循环周期代替for
:
int a = 0;
while (a < str.length && i + a < str.length()) {
sub = str.substring(a, i + a + 1);
System.out.println(sub);
a++;
}
也可以将break
替换为return
语句
答案 1 :(得分:1)
计算一定长度的可能子串数。例如,长度1 = 1子串,长度2 = 3,长度3 = 6,依此类推。
然后循环多次。无论输入字符串有多长,都应该使用通用公式。
答案 2 :(得分:1)
您无需休息即可完成此任务。
int len = str.length();
for (int i = 0; i < len; i++) {
for (int j = i; j < len; j++) {
System.out.println( str.substring( i, j + 1 ) );
}
}
答案 3 :(得分:0)
//= stub_glob angular/**/*.spec.js
循环
for
请注意,for(int a = 0; a < str.length() && i + a < str.length(); a++)
{
sub = str.substring(a,i+a+1);
System.out.println(sub);
}
与i + a + 1 <= str.length()