2017-11-30 4 views
0

Ich arbeitete an einem Java-Codierungsproblem und das folgende Problem festgestellt.Entfernen von null aus nicht verwendetem Speicherplatz von StringArray beim Konvertieren in eine Zeichenfolge in Java

Input: A String -> "Code" 
Output Expected: A string -> CCoCodCode 

My-Code-Schnipsel: (Anmerkung: In den Kommentaren Ich habe geschrieben, was ich über das Bestehen der Zeichenfolge erwarten)

public String stringSplosion(String str) { // string Say 'Code' 
    String join = "", values = ""; 
    String gotIt = ""; 

    int n = str.length(); // 4 
    int size = 0; 

    for (int i = n; i >= 1; i--) { 
     size = size + n; // 4+3+2+1=10 
    } 

    String[] result = new String[size]; 

    for (int i = 0; i < str.length(); i++) { 
     values = str.substring(i, i + 1); 
     join = join + values; 
     result[i] = join; 
    } 

    for (String s : result) { 
     gotIt = gotIt + s; 
    } 

    return gotIt; // Expected output: CCoCodCode 
} 

Output Ich erhalte:

CCoCodCodenullnullnullnullnullnullnullnullnullnullnullnull 

Warum ist null bekommen gespeichert, obwohl ich die Größe reduziert habe und wie kann ich es entfernen?

HINWEIS: Ich muss dies mit Arrays lösen. Ich weiß, dass es viel einfacher ist, List zu verwenden.

+0

Bitte lernen, wie man Code einzugeben. Es ist nicht schwer, entweder 4 Leerzeichen einzurücken oder den '{} 'Knopf im eingebetteten Editor zu benutzen. –

+0

Entschuldigung für die Unannehmlichkeiten. Ich werde es befolgen. –

+0

Größe ist null, weil Ihr Array zu groß scheint? warum nicht nur den Wert drucken, wenn es nicht null ist –

Antwort

0

Größe sollte die Länge der Zeichenfolge sein. Die Länge des Codes beträgt 4. Der Code erzeugt {C, Co, Cod, Code}.

1
public class Answer { 

public static String answer(String input){ 

    StringBuilder sb = new StringBuilder(((input.length() + 1) * input.length())/2); 

    for (int i = 1; i <= input.length(); i++) { 
     sb.append(input.substring(0, i)); 
    } 

    return sb.toString(); 
} 

public static void main(String[] args) { 
    System.out.println(answer("Code")); 
} 

}

0
String input = "Code"; 
String output[] = IntStream.range(0, input.length()+1) 
      .mapToObj(i -> input.substring(0, i)) 
      .toArray(String[]::new); 
1

Wenn Sie die aktuelle Struktur Ihres Codes behalten möchten, entfernen Sie die erste for-Schleife. Und erstellen String [] array = new String [n]

public static String stringSplosion(String str) { // string Say 'Code' 
String join = "", values = ""; 
String gotIt = ""; 

int n = str.length(); // 4 

String[] result = new String[n]; //you want your String array to contain 4 strings 

for (int i = 0; i < str.length(); i++) { 
    values = str.substring(i, i + 1); 
    join = join + values; 
    result[i] = join; 
} 

for (String s : result) { 
    gotIt = gotIt + s; 
} 

return gotIt; // Expected output: CCoCodCode 
} 
1

Im Folgenden Aussagen sind nicht erforderlich:

int size = 0; 

    for (int i = n; i >= 1; i--) { 
     size = size + n; // 4+3+2+1=10 
    } 

Sie müssen nur die Größe von Array ändern

String[] result = new String[size]; 

zu

String[] result = new String[n]; 

für Ihr Programm, um die erwartete Ausgabe zu geben.

1

Wenn ich ur Problem richtig verstehen das Muster zu drucken, dann kann u Code unten verwenden,

public String printPattern(String input){  
//Holds the iteration value by index 
int previous=0; 
//It holds the result characters 
String result=null; 
StringBuilder strBuilder=new StringBuilder(); 
//first loop to iterate only till input string length 
for(int i=0;i<input.length();i++){ 
    //checking iteration lenght with input string length 
    if(previous<input.length()){ 
     //incrementing iteration for reading characters from input string 
     previous++; 
     //main loop for previous iteration value check and iterate 
     for(int j=0;j<previous;j++){ 
      //converting string to Character array 
      char a []=input.toCharArray(); 
      //using string builder to build the string from characters 
      strBuilder.append((a[j])); 
      //setting the value to stringbuilder by converting it in string 
      result=strBuilder.toString(); 

     } 

    } 
} 

return result; 

}

Verwandte Themen