簡體   English   中英

在不使用break的情況下停止for循環

[英]Stopping a for loop without using break

我正在嘗試編寫一個程序,該程序打印輸入的字符串的所有子字符串。 例如,如果用戶輸入“ 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);
        }
    }
}
}

該程序可以完美運行,但是由於我們沒有在課堂上學習如何使用“ break”,因此我正在尋找不同的東西。 除“休息”外,任何想法都歡迎。

提前致謝。

您可以使用此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++;
 }

也可以用return語句替換break

計算一定長度下可能有多少個子字符串。 例如,長度1 = 1子字符串,長度2 = 3,長度3 = 6,依此類推。

然后循環很多次。 無論輸入字符串有多長,都應該有一個通用公式。

您無需休息即可完成此任務。

  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 ) );
     }
  }

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()i + a < str.length()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM