2016-06-13 8 views
1

文字列に入力を受け取り、文字列にアンダースコアが含まれている場合は、その書式を変更するプログラムを作成しています。たとえば、「here_wego」という文字列を受け取った場合、「hereWego」が返されますが、その代わりに「herewego」が返されます。私がここでやろうとしたことは、入ってくる文字列を文字配列に変換し、各文字をチェックしてアンダースコアであるかどうかをチェックすることです。 のアンダースコアでない場合、文字が出力文字列に追加されます。 のアンダースコアの場合、文字は追加されず、代わりにc [i + 1]を大文字に変更して次のイテレータに追加する必要があります。char配列の値が大文字に変更されていない

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; 
} 

私には、デバッグプロセスの図へのリンクが含まれています。

Going through the program debugging

+1

'Character.toUpperCase(C [I + 1]だった場合は、例外をスローしますけれども今私は、正しい出力を得ます); 'は実際に' c [i + 1] 'を変更しません:単に大文字の' char'を返します。また、 'String.toCharArray()'の呼び出しに起因する 'char []'を変更しても、文字列は変更されません。 '新しいString(c);を返す必要があります。 –

+0

'char'はプリミティブです。これは不変です。 'Character.toUpperCase(c [i + 1])'は渡された 'char'の大文字のバージョンである新しい' char'を返します。これを破棄します。 –

+0

@AndyTurner私は、OPがsome_snake_case_stringを大文字の文字列に変更したいと考えています。 –

答えて

3

これはトリックを行う必要があります。

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

ありがとう! – ThomasJazz

0

はあなたのコードがoptimalizedされていないこの

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

代わりの

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

     } 
0

を試してみてください。

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; 
} 

は私がc[i+1];を行う前に、私はi++;をカウントすることを参照してください。また、manip +=は、大文字でcharを追加するために使用されます!私はそれのことを単に認識していなかった、代わりにhereWwego、hereWego

0

@AndyTurner感謝を:あなたはi++;

使用していない場合は、代わりにあなただけのあなたのoutpurは次のようになりc[i+1]使用します文字を大文字で返しました。私はそれに応じて自分のコードを変更し、それを修正:

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

文字列は "here_"

関連する問題