2016-04-01 4 views
0

私は、入力された文字列のすべての部分文字列を出力するプログラムを作成しようとしています。たとえば、ユーザが「ラム酒」と入力すると出力はこのようになります。休憩を使わずにforループを停止する

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); 
     } 
    } 
} 
} 
このプログラムは完璧に動作します

私たちはクラスで「ブレーク」を使用する方法を学ぶことがなかったから、私はよ異なるものを探しています。 "休憩"以外のアイデアは大歓迎です。

ありがとうございます。

+3

どのようにbreakステートメントを追加しようとしていますか?あなたはそれが何をしようとしているのか分かっているようです。 – JJF

+0

便利なリンク:[指定された文字列の順列の生成](http://stackoverflow.com/questions/21143485/generating-ordered-permutations-of-a-given-string) –

答えて

0

あなたはi + a + 1 <= str.length()あなたはこの作業を行うには休憩を必要としないi + a < str.length()

3

かわりforのこのwhileループサイクルを使用することができます。

int a = 0; 
while (a < str.length && i + a < str.length()) { 
    sub = str.substring(a, i + a + 1); 
    System.out.println(sub); 
    a++; 
} 

またreturn声明

1

一定の長さのためにそこにすることができますどのように多くの可能な部分文字列を計算してbreakを交換することが可能です。たとえば、長さ1 = 1、長さ2 = 3、長さ3 = 6などとなります。

それで何回もループします。入力文字列の長さに関係なく使用できる汎用式が存在するはずです。

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

ノートに二つの条件を持つことができます。

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)); 
    } 
    } 
関連する問題