これが私たちのコードです。それらを逆の順序で印刷したい。だから1つの行は:はい、4チョコレートミルクです。我々は印刷したい:ミルクチョコレート4はい。Javaの文字列の反転言葉は
私たちのコードは単語を逆順に出力するので、yesはseyになります。私たちはそれがこのようなものであることを望んでいませんが、それをどのように変更するかはわかりません。私たちはスタックの作成を考えてきましたが、PatternとMatcherのものと一緒に動作する方法はありません。
これが私たちのコードです。それらを逆の順序で印刷したい。だから1つの行は:はい、4チョコレートミルクです。我々は印刷したい:ミルクチョコレート4はい。Javaの文字列の反転言葉は
私たちのコードは単語を逆順に出力するので、yesはseyになります。私たちはそれがこのようなものであることを望んでいませんが、それをどのように変更するかはわかりません。私たちはスタックの作成を考えてきましたが、PatternとMatcherのものと一緒に動作する方法はありません。
あなたは読んだ行を逆にしてはいけませんが、その行をコレクションに分割して逆にするべきではありません。 この得るので、何をして、文字を反転さ:
Yes, 4 Chocolate milk -> klim etalocohC 4 , seY
あなたは["Yes","4","Chocolate milk"]
に行を分割する場合は、その配列/リストを逆にすることができます。
問題は次のとおりです。Chocolate milk
の順番にしておきたいので、どの単語が一緒に属しているかを定義する必要があります。あなたの入力が常に<words>, <number> <words>
の場合は、最初に<words>
を区切るために,
に分割し、残りの最初の空白を区切って番号と2番目の<words>
を分割することができます。
更新はこれを試してみてください。
String input = "Yes sir, 4 Chocolate milk";
//Pattern is:
//- one or more words separated by whitespace as group 1: ((?:\\w+\\s*)+)
//- a comma
//- optional whitespace: \\s*
//- an integer number as group 2: (\\d+)
//- optional whitespace \\s*
//- an arbitrary rest (which might contain anything) as group 3: (.*)
Pattern p = Pattern.compile("((?:\\w+\\s*)+),\\s*(\\d+)\\s*(.*)");
Matcher m = p.matcher(input);
List<String> list = new ArrayList<String>();
while(m.find()) {
list.add(m.group(1));
list.add(m.group(2));
list.add(m.group(3));
}
Collections.reverse(list);
for(String s : list) {
System.out.println(s);
}
出力は、これはあなたの入力のレイアウトに依存し、ちょうど開始を提供することを意図していることを
Chocolate milk
4
Yes sir
注意する必要があります。また、他のパターンマッチングロジックと統合する必要があります。
Scanner
または単にString.split()
を使用して、ライン内にすべてのトークンのArray
またはCollection
を作成してみてください。次に、for
-loopを使用してそれを逆方向に繰り返して、行を再作成します。これを達成するためにCollections.reverse()
を使用することもできます。
文字列を単語で分割し、結果を文字列の配列に保存し、最後の要素から最後の要素までの文字列を表示します。 コード:
public static void main(String[] args) {
String hello = "bananas 45 guns me likes 3";
String[] reverse_me = hello.split(" ");
// the -1 is because the index starts in zero :-0)
for(int i = reverse_me.length-1; i >= 0 ; i--){
System.out.println(reverse_me[i]);
}
}
出力:この宿題は
3
likes
me
guns
45
bananas
ですか?もしそうなら、そのようにタグを付けてください。 –
私はSplit( "")ですべての単語を解析します。それらをハッシュマップに入れて逆にします。私は、それがテキストを逆にする最も速い方法だと思う。 – Racooon
あなたのサンプル出力が "チョコレートミルク4はい"で、 "ミルクチョコレート4はい"ではないのはなぜですか?それは慎重ですか?はいの場合、アルゴリズムはそれをどのように認識すべきですか? – amit