Я изучаю 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» в качестве вывода. Будут напечатаны как гласные, так и гласные гласные. Я думаю, что я должен заменить string.charAt (i), который является строчной гласной с upperCaseVowel, но я не могу найти какой-либо метод replace() или что-то в этом роде для символов. Я пробовал другие вещи, такие как StringBuilder и т. Д., Но я не нашел решения, которое достаточно просто, чтобы избежать массивов, поскольку я еще не изучил их. Любая помощь в том, как я могу получить правильный результат, высоко оценена. Благодаря!
[Там есть способ заменить] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace%28char,%20char%29). – resueman
Не печатайте символ в позиции $ i^{th} $, пока не проверьте, является ли это гласным. – user2505282