2016-06-13 2 views
1

Ich schreibe ein Programm, das eine Zeichenfolge als Eingabe erhält und das Format der Beschriftung ändert, wenn es einen Unterstrich enthält. Zum Beispiel, wenn ich den String "here_wego" erhalte, sollte er "hereWego" zurückgeben, aber stattdessen bekomme ich "herewego". Was ich hier versucht habe, ist, die eingehende Zeichenfolge in ein Zeichenarray umzuwandeln und dann jedes Zeichen zu überprüfen, ob es ein Unterstrich ist. Wenn nicht ein Unterstrich ist, wird das Zeichen zur Ausgabezeichenfolge hinzugefügt. Wenn ein Unterstrich ist, wird das Zeichen nicht hinzugefügt, stattdessen sollte c [i + 1] in Großbuchstaben geändert werden, damit es im nächsten Iterator hinzugefügt werden kann.Char-Array-Wert wird nicht in Großbuchstaben geändert

public static String zebulansNightmare(final String functionName) { 

    String manip = ""; 
    char[] c = functionName.toCharArray(); 

    for(int i = 0; i < c.length; i++){ 
     if(c[i]!='_'){ 
      manip += c[i]; 
     } else { 
      Character.toUpperCase(c[i+1]); 
     } 
    } 

    return manip; 
} 

Ich habe einen Link zu einem Bild des Debugging-Prozesses enthalten.

Going through the program debugging

+1

'Character.toUpperCase (c [i + 1]); 'ändert nicht wirklich' c [i + 1] ': es gibt einfach das obere" char "zurück. Das Ändern von 'char []', das aus einem Aufruf von 'String.toCharArray()' resultierte, ändert die Zeichenfolge nicht. Du müsstest 'neuen String (c);' zurückgeben. –

+0

'char' ist ein Primitiv - das macht es unveränderlich. 'Character.toUpperCase (c [i + 1])' gibt ein neues 'char' zurück, das die obere Version des übergebenen' char' ist - du wirfst dies ab. –

+0

@AndyTurner Ich glaube, das OP möchte some_snake_case_string in eine Upper Cased String ändern. –

Antwort

3

Dies sollte den Trick:

c[i+1] = Character.toUpperCase(c[i+1]); 
+0

Vielen Dank! – ThomasJazz

0

try this

} else { 
      manip += Character.toUpperCase(c[i+1]); 
      i++; 
     } 

statt

} else { 
      Character.toUpperCase(c[i+1]); 

     } 
0

Ihr Code nicht optimalisiert wird.

public static String zebulansNightmare(final String functionName) { 

    String manip = ""; 
    char[] c = functionName.toCharArray(); 

    for(int i = 0; i < c.length; i++){ 
     if (c[i] != '_'){ 
      manip += c[i]; 
     } else { 
      i++; 
      manip += Character.toUpperCase(c[i]); 
     } 
    } 
    return manip; 
} 

sehen, dass ich i++; zählen, bevor ich die c[i+1]; tun. Auch die manip += wird verwendet, um das Zeichen in Großbuchstaben hinzuzufügen!

Wenn Sie nicht verwenden die i++;, sondern verwenden Sie nur die c[i+1] Ihre outpur wäre: hereWwego, statt hereWego

0

@AndyTurner dank ich nicht, dass es ahnten nur gab das Zeichen in Großbuchstaben zurück. Ich änderte meinen Code entsprechend und es fest:

if(c[i]!='_'){ 
      manip += c[i]; 
     } else { 
      manip += Character.toUpperCase(c[i+1]); 
      i++; 
     } 

Jetzt bekomme ich die richtige Ausgabe, obwohl es eine Ausnahme auslösen würde, wenn die Zeichenfolge "here_"

ist
Verwandte Themen