2017-09-06 32 views
2

私たちの仕事は、charAtを使用して2つの文字列を連結するコードを作成することでした。それでは、私は次のようたんでした。Java charAtのみで2つの文字列を連結する

Scanner sc = new Scanner (System.in); 
char operation = sc.nextLine().charAt(0) 
String c = "concatenation"; 
if (operation == 'c') { 
     System.out.println("Please enter the first string: "); 
     String firstString = sc.next(); 
     System.out.println("Please enter the scond string: "); 
     String secondString = sc.next(); 

     System.out.print("The result of concatenating " + firstString + " and " + secondString + " is "); 
     for (int i = 0; i < firstString.length(); i++) { 
      char x = firstString.charAt(i); 
      System.out.print(x); 
     } 
     for (int i = 0; i < secondString.length(); i++) { 
      char y = secondString.charAt(i); 
      System.out.print(y); 
     } 
    } 

先生は、次の私に言った:「だから、現在、あなたは、単に印刷されているが、目標はS1とS2の両方の連結である新しい文字列を作成することです...あなたが作成した新しい文字列を印刷するので、charAtを使用する方法がありますが、一度に1つの文字を印刷する代わりに、一度に1つの文字を連結する必要があります。

だから私はこのような何かが仕事ができるかもしれないと思った:

String concatenated; 
    for (int i = 0; i < firstString.length(); i++){ 
     concatenated = firstString.charAt(i); 
    } 

どうやらそれが原因で、互換性のないタイプで、そうではありませんでした。

だから私はcharAtを使って2つの文字列を連結するために、できることを聞いてみたいです。

+1

あなたの教師があなたがStringBuilderを使用することを好むだろうかと思います –

+0

他の文字列操作を使用することはできません – JavaJoker204

+0

@ScaryWombatそうは思わないでしょう。単に '+'(または '.concat')を使用してください。 –

答えて

3

割り当てを実行していますが、連結ではないため、String変数にcharを割り当てることはできません。

String concatenated = ""; 
for (int i = 0; i < firstString.length(); i++){ 
    concatenated += firstString.charAt(i); 
} 

それとも、StringBuilderオブジェクトを使用して、それに文字を追加することができます:

StringBuilder concatenated = new StringBuilder(firstString.length()+secondString.length()); 
for (int i = 0; i < firstString.length(); i++){ 
    concatenated.append(firstString.charAt(i)); 
} 
for (int i = 0; i < secondString.length(); i++){ 
    concatenated.append(secondString.charAt(i)); 
} 
System.out.println(concatenated.toString()); 

文字を連結するためには、+オペレータ(または+=)を使用することができますこれはStringBuilderオブジェクトを生成するだけなので+演算子より効率的ですが、+演算子は新しいを生成しますあなたがそれを使用するたびにオブジェクト。

2

あなたは(あなたが各ループの繰り返しに新しい文字列を構築するため、次の時間の複雑さを持っている)ビットをより効率的+または+=を使用するよりも、それを実行したい場合は、配列で物事を置くことができます。

char[] chars = new char[first.length() + second.length()]; 
for (int i = 0; i < first.length(); ++i) { 
    chars[i] = first.charAt(i); 
} 
for (int i = 0; i < second.length(); ++i) { 
    chars[i + first.length()] = second.charAt(i); 
} 
String concatenated = new String(chars); 

(またはStringBuilderを使用することもできますが、これは基本的には内部的に同じです)。

関連する問題