文字列を入力として受け取り、Stacksを使用して入力内の各文の順序を逆にする別の文字列を返すメソッドを作成しようとしています。例えば、ユーザが「hi there。i like red。」と入力すると、出力される文字列は、 "私のように赤いところがあります"。私が作成した次のプログラムは、1つの文に対してうまく動作します。どのように私は期間を認識し、メソッドをもう一度開始するメソッドを変更することができますか?現在、「hi there」と入力すると、「there hi」という出力が得られます。しかし、 "hi there。i like red。"と入力すると、出力は "red。i there there。hi"になります。このreverseSentenceメソッドを変更して、ピリオドを認識し、次の文章をやり直すにはどうすればよいですか?アドバイスやヒントは非常に役立ちます。Stacksを使用したJavaの逆文
//Reverses the order of words inside of sentences.
import java.util.*;
import java.util.regex.*;
public class reverse {
//reverses the string using a stack
private static String reverseSentence(String inputString) {
String[] arrString = inputString.trim().split(Pattern.quote(" "));
Stack stack = new Stack();
for(String word : arrString)
{
stack.push(word);
}
StringBuilder builder = new StringBuilder();
while(!stack.isEmpty())
{
builder.append(stack.pop()).append(" ");
}
return builder.toString();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Stack<String> stack = new Stack<String>();
System.out.printf("Enter a sentence: ");
String sentence = scanner.nextLine();
if (sentence == null || sentence.length() == 0) {
System.out.println("Invalid...");
return;
}
String reverse = reverseSentence(sentence);
System.out.printf("Reversed string using stack is : %s", reverse);
while (!stack.isEmpty()) {
System.out.print(stack.pop() + " ");
}
}
}