2016-04-27 3 views
0

Ich versuche, einige grundlegende Operationen von Strings zu replizieren und der Code funktioniert es einfach nicht drucken Sie die Ausgabe und druckt die richtige Ausgabe aber es tut Zeile für Zeile und ich brauche es in einer Zeichenfolge, weshalb ich die StringBuilder benutze, aber es funktioniert nicht aus irgendeinem Grund.Grund String Operationen

Im Hauptverfahren i haben:

a = scan.nextLine(); 
    b = scan.nextLine(); 
    String concat = concatenation(a, b); 
+2

Drucken Sie die zurückgegebenen Werte? Bitte posten Sie Ihre Hauptmethode oder die Methode, zu der diese Funktionen zurückkehren. – Zircon

+0

Verwenden Sie 'print()' anstelle von 'println()'? –

+2

Warum nicht 'return new StringBuilder (a) .append (b) .toString();'? –

Antwort

0

verwende ich möchte nur verstehen, warum die String nicht

Was funktioniert, wie ich sehen kann, gibt es nichts falsch mit der StringBuilder oder concatenation Methode.

a = scan.nextLine(); 
b = scan.nextLine(); 
String concat = concatenation(a, b); 

Ich denke Problem ist, dass man einfach das Ergebnis des concatenation Methodenaufrufes eine Variablen zugewiesen hat und es nicht ausgedruckt. Fügen Sie diese nach der letzten dieser drei Linien:

System.out.println(concat); 

In beiden Fällen ist die System.out.println() arbeitet und druckt die richtige Ausgabe aber es Zeile für Zeile und ich brauche es in Eine Zeichenfolge

Das ist, weil Sie println verwenden. Die println-Methode übertrifft ihr Argument, gefolgt von einer Leitungsbeendigung. Wenn Sie die Leitungsbeendigung nicht möchten, verwenden Sie stattdessen print.

Die concatenation Methode sollte jedoch nichts drucken, wenn es ein Analogon von String.concat sein soll. Sie sollten die verkettete Zeichenfolge nach drucken, die von der concatenation-Methode zurückgegeben wird.

0
Ihre concatenation(String a, String b) als wie folgt ändern

. Ein viel besserer Ansatz, um zu erreichen, denke ich.

public static String concatenation(String a, String b) { 

    StringBuilder str1 = new StringBuilder(a); 
    StringBuilder str2 new StringBuilder(b);  
    str1.append(str2); 
     return str1.toString(); 
} 

und Sie können diese für subString(String a, int i, int j)

public static String subString(String a, int indexFirst, int indexLast) { 

    StringBuilder str = new StringBuilder(); 
    char[] arr = a.toCharArray(); 
     if(arr.length < indexFirst || arr.length > indexLast) 
      throw new Exception ("Invalid Index Out of Bound Found Exception"); 
    for (int k = i; k <= j; k++) 
     str.append(arr[k]); // this looks better than manipulating any String because of Immutability Property. 

    return str.toString(); 
    } 
+0

Es tut mir leid, ich habe vergessen, es in der Beschreibung zu erwähnen. Die Aufgabe besteht darin, zu zeigen, wie die Verkettungs- oder Teilstring-Methoden von Sprachen ausgeführt werden, ohne vordefinierte Funktionen wie das einfache "+" oder "." Zu verwenden. Deshalb habe ich mich für die unnötig komplizierte Methode der for-Schleifen entschieden –