不使用break就停止for循环

时间:2016-04-01 14:18:25

标签: java substring

我正在尝试编写一个打印输入字符串的所有子字符串的程序。例如,如果用户输入“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);
        }
    }
}
}

这个程序运作完美,但由于我们没有学习如何在课堂上使用“休息”,我正在寻找不同的东西。除了“休息”之外的任何想法都是受欢迎的。

提前致谢。

4 个答案:

答案 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()

相同