2016-06-22 9 views
0

Ich versuche, etwas Java zu schreiben, wobei ein String in ein Char-Array übergeben wird, in der Minute habe ich das Bit funktioniert gut, aber ich muss jetzt die Fähigkeit, so zu erhöhen Array ist in der Lage, die Leerzeichen innerhalb des ursprünglichen Strings zu erkennen und sie in das Array auszugeben oder sie in '-' zu ändern, so dass die Ausgabe des Codes die sichtbaren Leerzeichen enthält.Java String zum Char Array Erkennen von Leerzeichen

Der String wird extern in die Methode übergeben und gibt das Array zur weiteren Verarbeitung aus.

Eingang Wesen: abc def ghi jkl

Erwartete Ausgabe: abc-def-ghi-IKL

tatsächliche Ausgang: abcdefghiikl

+3

Nun zur Zeit Sie Anhängen von '-' * zweimal * für jeden Raum. Ist das das Problem, vor dem Sie stehen? Es ist schwer zu sagen - Sie haben kein Beispiel für Eingabe/erwartete Ausgabe/tatsächliche Ausgabe angegeben. Bitte geben Sie eine [MCVE] an. –

+4

'Rückgabe encodeInput.replace ('', '-'). Replace ('j', 'i'). ToCharArray();' – 4castle

+0

@ 4castle 'replaceAll' – Zircon

Antwort

0

Eine kleine Änderung behebt es: else vor dem zweiten if hinzufügen:

private static char[] checkForJ(String encodeInput){ 
    StringBuilder tempString = new StringBuilder(); 
    encodeInput = encodeInput.toLowerCase(); 
    char[] ch = encodeInput.toCharArray(); 
    for(char x : ch){ 
     if(x == ' '){ 
      x = '-'; 
      tempString.append(x); 
     }else if(x == 'j'){ 
      x = 'i'; 
      tempString.append(x); 
     }else { 
      tempString.append(x); 
     } 
    } 
    String finalString = tempString.toString(); 
    char[] newChar = finalString.toCharArray(); 
    return newChar; 
} 

Dies ist jedoch ziemlich wortreich. Es kann alles auf einmal gemacht werden:

private static char[] checkForJ(String encodeInput){ 
    return encodeInput.toLowerCase() 
         .replace(' ','-') 
         .replace('j','i') 
         .toCharArray(); 
} 

Ideone Demo

+0

Vielen Dank, ich habe jetzt diesen Abschnitt abgeschlossen und viel glücklicher mit den Ergebnissen. –

+0

Da 'tempString.append (x);' in beiden if/else-Fällen ausgeführt wird, hat es keinen Sinn, 'else' zu haben, wenn es seine einzige Anweisung ist. Rufen Sie es einfach nach "if" auf. Auch sollte 'if (x ==' j ')' höchstwahrscheinlich 'else if (x ==' j ') 'sein, um Szenarien zu vermeiden, in denen wir den Raum in' j' ändern und dann erneut testen, ob 'x 'ist j' und ersetzen Sie es durch 'i'. – Pshemo

+0

@Pshemo Das macht viel mehr Sinn. Ich habe aktualisiert. Ich werde jedoch davon absehen, mehr Effizienz hinzuzufügen, weil sie sowieso das Einzeiler verwenden sollten. – 4castle