2017-12-14 29 views
-9

私は現在、文字列として小文字のアルファベット(スウェーデン語)全体を割り当てており、他のすべての文字を大文字に変換する必要があります。私は今だところである:文字列内の他のすべての文字を大文字に変換する方法

public static void main(String[] args) { 
    String alphabet = "abcdefghijklmnopqrstuvwxyzåäö"; 
    System.out.println(alphabet); 
    for (int i = 0; i < 29; i = i + 2) { 
     char result = alphabet.charAt(i); 
     alphabet.toUpperCase(result); 
    } 
    System.out.println(alphabet); 
} 

問題は今alphabet.toUpperCase(result);は私がロケールに文字を変換することができないエラーを与えるということです。これをどうやって解決するのですか?

+5

「String.toUpperCase」のドキュメントを見てきましたか?それは 'char'パラメータを受け取りますか?それがあった場合は、結果をどこにも使用していないので、メソッドに呼び出すことをどのように期待しますか? –

+1

[JavaDoc](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#toUpperCase-java.util.Locale-)はあなたの友人です。 –

+3

特定の*文字*を大文字に変換したい場合は、Characterクラスを使用するとよいでしょう。 https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#toUpperCase(char) –

答えて

3

文字の大文字を取得する場合は、文字列のtoUpperCaseではなく、Character.toUpperCase(c)を使用する必要があります。

だから、私はあなたがこのような何かを探しているかもしれないと思う:

public static void main(String[] args) { 
    String alphabet = "abcdefghijklmnopqrstuvwxyzåäö"; 
    System.out.println(alphabet); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < alphabet.length(); i++) { 
     char c = alphabet.charAt(i); 
     sb.append(i % 2 == 0 ? Character.toUpperCase(c) : c); 
    } 
    String result = sb.toString(); 
    System.out.println(result); 
} 

出力:

abcdefghijklmnopqrstuvwxyzåäö

AbCdEfGhIjKlMnOpQrStUvWxYzÅäÖ

文字列は不変であるので、あなたはクレアしなければならないあなたが望むものを得るための新しいStringこれを行う効率的な方法は、StringBuilderを使用する方法です。

編集:

より直感的な方法は、それが可変になりcharの配列に文字列を変換することであるのStringBuilderなしで、おそらくそれを行うための別の方法。最後に、文字列に戻します。結果は次のようになります。

public static void main(String[] args) { 
    String alphabet = "abcdefghijklmnopqrstuvwxyzåäö"; 
    System.out.println(alphabet); 

    char[] chars = alphabet.toCharArray(); 
    for (int i = 0; i < alphabet.length(); i+=2) { 
     chars[i] = Character.toUpperCase(chars[i]); 
    } 
    String result = new String(chars); 
    System.out.println(result); 
} 
+0

問題は、文字列にtoUpperCaseを実行しようとしていることです。それはその方法がどのように機能するかではありません。私は自分の答えの中の最初の行で何とかこれを言うと信じていました。 – gus3001

+0

これは、ありがとう!私の先生が私にStringBuilderを使用してもらいたいとは確信していませんが、それはする必要があります。 – Thunderstruck

+0

申し訳ありませんが、あなたの例は彼女とは大きく異なるので、見落としてしまいました。 –

関連する問題