2017-03-01 8 views
0

タイトルが示唆しているように、私は問題解決が難しい宿題を持っています。基本的な文字列メソッド(length、charAt、substring、equals、equalsIgnoreCase)とループのみを使用して、ユーザー入力文字列内の文字のすべてのインスタンスを置き換え、新しい文字列をユーザーの代わりに必要な新しい文字で印刷する必要があります。古い。 indexOfを使用せずに文字列の文字のインスタンスをすべて検索して格納する方法がわかりません。これは私が書いたいくつかの基本的なコードであり、どんな指針も高く評価されます。私はどのようにこれらの基本的な文字列メソッドだけを使用して文字のすべてのインスタンスを置き換えるか分からない。文字列内の文字のすべてのインスタンスをループのみを使用して置換する

 String letter; 

     System.out.println("Enter the character you want to replace"); 
     input = keyboard.nextLine(); 

     int characterAt = 0; 
     for (characterAt = 0; characterAt < savedInput.length(); characterAt++) 
     { 
      letter = "" + savedInput.charAt(characterAt); 
       if(input.equals(letter)) 
      { 
       System.out.println("Enter the new character"); 
       input = keyboard.nextLine(); 
       System.out.println("The new string is: "); 

      } 
     } 

答えて

1

いくつかの方法があります。 Stringcharacters - String#toCharArrayの配列に変換できます。そして、配列を繰り返し処理し、charを新しい値に置き換える必要があります。

char[] chars = "lorem ipsum sit amet".toCharArray(); 
char newValue = 'X'; 
for (int i = 0; i < chars.length; i++) { 
     if (chars[i] == 'm') { 
      chars[i] = newValue; 
     } 
} 
System.out.println(new String (chars)); // loreX ipsuX sit aXet 

あなたが同様のソリューションのためのStringBuilderを使用することがあります:あなたも同様に、そのためにstream APIを使用することができます

StringBuilder builder = new StringBuilder("lorem ipsum sit amet"); 
char newValue = 'X'; 
for (int i = 0; i < builder.length(); i++) { 
    if (builder.charAt(i) == 'm') { 
     builder.setCharAt(i, newValue); 
    } 
} 
System.out.println(builder); // loreX ipsuX sit aXet 

String newString = "lorem ipsum sit amet".chars().map(el -> { 
    if ((char) el == 'm') { 
     return 'X'; 
    } else { 
     return el; 
    } 
}).collect(StringBuilder::new, 
     StringBuilder::appendCodePoint, StringBuilder::append) 
     .toString(); 
System.out.println(newString); // loreX ipsuX sit aXet 
関連する問題