2016-03-27 14 views
0

私は自分でJavaを学習し、オンライン演習を使って練習しています。これまでの方法まで学習しただけなので、このエクササイズの配列を使用することは私の範囲を超えています。Java文字を文字に置き換える

練習問題は次のとおりです。母音で文字列を入力させますか?母音の文字があれば母音として母音を表示してください。

例:

import java.util.Scanner; 

public class CapitalizeVowels { 
    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Enter a string ~ "); 
     String string = keyboard.nextLine(); 

     for (int i = 0; i < string.length(); i++) { 
      System.out.print(string.charAt(i)); 
      if (string.charAt(i) == 'a' || 
       string.charAt(i) == 'e' || 
       string.charAt(i) == 'i' || 
       string.charAt(i) == 'o' || 
       string.charAt(i) == 'u') { 

       char upperCaseVowel = Character.toUpperCase(string.charAt(i)); 
       System.out.print(upperCaseVowel); 

       // need to replace string.charAt(i) with upperCaseVowel 
       // find something to replace characters 
      } 
     } 
    } 
} 

それが入力された文字列で、あるように私は私のコードを実行すると:ユーザーが「りんご」を入力した場合、正しい出力は、私がこれまでのところ、このコードを持っているリンゴ

です例えば、「りんご」は、私の出力として「aAppleEs」を取得します。小文字の母音と大文字の母音の両方が印刷されています。私はlowerCaseVowelと小文字の母音であるstring.charAt(i)を置き換えなければならないと思っていますが、replace()メソッドやその文字のための何かを見つけることができません。私はStringBuilderなどのような他のものを試しましたが、私はそれらをまだ学んでいないので、配列を避けるのに十分単純な解決策を見つけていません。どのように私が適切な出力に到達できるかについての助けは非常に高く評価されます。ありがとう!

+0

[置き換える方法があります](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace%28char,%20char%29)。 – resueman

+1

母音かどうかを確認するまで、$ i^{th} $の位置に文字を表示しないでください。 – user2505282

答えて

2

あなただけ例えば、二度同じ文字を出力しないようにするために、elseからSysoutifに声明を移動する必要があります。:

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 

    System.out.print("Enter a string ~ "); 
    String string = keyboard.nextLine(); 

    for (int i = 0; i < string.length(); i++) { 

     if (string.charAt(i) == 'a' || string.charAt(i) == 'e' || string.charAt(i) == 'i' || string.charAt(i) == 'o' 
       || string.charAt(i) == 'u') { 

      char upperCaseVowel = Character.toUpperCase(string.charAt(i)); 
      System.out.print(upperCaseVowel); 

      // need to replace string.charAt(i) with upperCaseVowel 
      // find something to replace characters 
     }else{ 
      System.out.print(string.charAt(i)); 
     } 
    } 
} 
+0

ああ!そうですか。アルゴリズムは正しく実行されましたが、論理的には印刷されませんでした...ありがとう! – camelCoder

3

それは母音だ場合あなたのミスが試験前にすべての文字を印刷しています。

代わりに、それぞれの文字が何であるべきかを把握した後に印刷してください。あなたのループの本体は、次のようになります。

else { 
    next = Character.toLowerCase(next); 
} 

を下ケースであること以外の母音を適用するには:

char next = string.charAt(i); 
if (next == 'a' || 
    next == 'e' || 
    next == 'i' || 
    next == 'o' || 
    next == 'u') { 
    next = Character.toUpperCase(next); 
} 
System.out.print(next); 

あなたは追加することを検討してください。

+0

これは私が偉大な考えの後まで考えなかった別の素晴らしい方法です。 :P – camelCoder

0

これは私のために働いてください。

class ReplaceVowel { 

    public static void main(String[] args) { 
     String words = "apples"; 
     char converted = 0; 
     String w = null; 
     for (int i = 0; i < words.length(); i++) { 
      if (words.charAt(i) =='a'|| words.charAt(i)=='e'||words.charAt(i)=='i'||words.charAt(i)=='o'||words.charAt(i)=='u') { 
       converted = Character.toUpperCase(words.charAt(i)); 
       w = words.replace(words.charAt(i), converted); 
       words = w; 

      } else { 
       converted = Character.toUpperCase(words.charAt(i)); 
       w = words.replace(words.charAt(i), converted); 
       words = w; 
      } 
     } 
     System.out.println(words); 
    } 
} 
関連する問題