2017-10-06 1 views
2

配列が連結されない理由はありません。配列を他の文字と連結すると、tempStringの内容は表示されません。しかし、特殊文字を削除すると出力が生成されます。配列をスペースで連結する方法は?

EG 特別な文字がない場合、出力は // ThisisaSingleLineComment あるしかし、私は他の特殊文字を使用する場合、私は使用されるコードは、FF:

あるすべての

の出力はありません

tempString=tempString+newTokens[ctr]; 

tempString+=newTokens[ctr]; 

このコードでも文字列ビルダーを使用しても、出力はありません。

StringBuilder sb = new StringBuilder(100); 
sb.append(newTokens[ctr]); 
sb.append(whiteSpace); 

私の出力は、この //このようになるはずですそれらの一つ一つが、私は一つの文字列/キューを形成するように結合するアレイに割り当てられているので、1行コメント

です(スタック)値。 tempStringのVARを使用すると、ステートメントの上

以下
String tempString = newTokens[0]; 

ようにする必要があり

+0

何をtempStringを使って初期化しましたか?newTokens配列に何が入っていますか? – Acewin

+0

私のtempStringはスペース/ tempString = ""として初期化されました。 私のnewTokens配列の内容はこれです newTokens = {"//"、 "This"、 "is"、 "a"、 "single"、 "line"、 "comment"} –

答えて

2

あなたのコードブロックしながら、単純に受信した最初のトークンに対するtempStringのVARを初期化することです。

新しいトークンの場合、連結は次のようになります。または、配列の最後のインデックスまでのインデックス1のトークン。

for(int ctr = 1; ctr < newTokens.length; ctr++) { 
    tempString = tempString + "\b" + newTokens[ctr]; 
} 

コードに空白文字を追加していません。 \ bは、空白または空白のエスケープ文字です。

また、私はあなたがStringBuilderの部分のためのあなたの全体の方法のブロックを置くことをお勧め声明

tempString = tempString + " " + newTokens[ctr] 

の下に使用することができます。

コードを実行している入力値または配列値が不明​​です。

通常、これをループ内で実行すると、StringBuilderで完全な文字列を生成する必要があります。 StringBuilderのため

サンプルコードは、以下である連結に間違っている、この

StringBuilder sb = new StringBuilder(100); 

for(int ctr = 0; ctr < newTokens.length; ctr++) { 
    sb.append(newTokens[ctr]); 
    sb.append(whiteSpace); 
} 

あなたのコードのようになります。

tempString=tempString+newTokens[ctr]; 

tempString+=newTokens[ctr]; 

最後に更新されたtempStringの値に連結されます。

たとえば、空のスペースで最初にtempStringを初期化しました。

最初の反復では、文字列値は "//"となります。現在、tempStringは空白文字ではありません。あなたは、私はあなたがまたStringJoinerを使用することができます上記の例で

+0

ありがとうございました。問題は、私はなぜそれが動作するのか聞いてもよいでしょう tempString = tempString + "" + newTokens [ctr]; ではなく、tempString = tempString + newTokens [ctr] + "";ではありません。 ? どういうわけか、彼らは同じで、2人の違いはありますか?あなたが与えたコードとほぼ同じコードを使用しています。 –

+1

基本的には、tempString = tempString + newTokens [ctr] + "";後の空白を後のtempStringとnewTokenの間に追加しないでください。最後のtempStringとnewTokenの間に空白を配置する必要があります。文字列の連結について言えば、A + BはAB、B + AはBAです。 – Acewin

0

を示したとして、別途、新たな空白文字を追加する必要があります:

StringJoiner joiner = new StringJoiner(" "); 
    for(String string : myList){ 
     joiner.add(string); 
    } 
    System.out.println(joiner.toString()); 
+2

nice !! atleast文字列連結String.joinとStringJoinerの2つの新しい方法を知っておく必要があります。どちらもJava 8で導入されました。 – Acewin

+0

私もシンプルなものを使用していましたが、読むのは簡単です。特殊文字を間違った場所に挿入して連結します。しかし、ストリング・ジョインは、宣言が少なくても簡単に実現できます。 –

+0

@JoshuaCariñoは、その文字列の連結を非常に非効率的に覚えています。あなたはそれを避けてください。 –

1

String#join

String[] newTokens ={"This","is","a","Single","Line","Comment"}; 
System.out.println(String.join(" ",newTokens)); 

を使用していないのはなぜそして、出力は

This is a Single Line Comment 
+0

えええええええええええええええええええええええええええええええええええええええ投稿者:しかしOPが欠けているのは、どのように連結が働くかをはっきりと理解することです。 – Acewin

関連する問題