[英]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.