#java #string
#java #строка
Вопрос:
я пытался написать код для изменения гласных строки, но он не меняет символы, как должно быть, пожалуйста, проверьте это, скажите мне, что я сделал не так 🙂
package stringQuestions;
import java.util.Scanner;
public class ReverseVowelsOfSTring {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String S = sc.nextLine();
int n = S.length();
char ch[] = S.toCharArray();
for(int i = 0; i<n; i ) {
if(ch[i] == 'a' || ch[i] == 'e' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'u'
|| ch[i] == 'A' || ch[i] == 'E' || ch[i] == 'I' || ch[i] == 'O' || ch[i] == 'U'){
for(int j = n-1; j>i; j--) {
if(ch[j] == 'a' || ch[j] == 'e' || ch[j] == 'i' || ch[j] == 'o' || ch[j] == 'u'
|| ch[j] == 'A' || ch[j] == 'E' || ch[j] == 'I' || ch[j] == 'O' || ch[j] == 'U') {
char temp = ch[j];
ch[j] = ch[i];
ch[i] = temp;
break;
}
}
}
}
System.out.println(ch);
}
}
Комментарии:
1. дайте некоторый ожидаемый результат для некоторого ввода. ваше утверждение неясно
2. Я бы рекомендовал вам поместить все эти
if
операторы в вызываемую функциюbool isVowel(char c)
и вызвать ее какif (isVowel(char[i]))
.
Ответ №1:
Я считаю, что вы должны сохранить последний символ в обратном порядке, иначе вы будете продолжать заменять тот же символ в конце строки:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String S = sc.nextLine();
int n = S.length();
char ch[] = S.toCharArray();
int lastReversedChar = n - 1;
for(int i = 0; i<n; i ) {
if(ch[i] == 'a' || ch[i] == 'e' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'u'
|| ch[i] == 'A' || ch[i] == 'E' || ch[i] == 'I' || ch[i] == 'O' || ch[i] == 'U'){
for(int j = lastReversedChar; j>i; j--) {
if(ch[j] == 'a' || ch[j] == 'e' || ch[j] == 'i' || ch[j] == 'o' || ch[j] == 'u'
|| ch[j] == 'A' || ch[j] == 'E' || ch[j] == 'I' || ch[j] == 'O' || ch[j] == 'U') {
char temp = ch[j];
ch[j] = ch[i];
ch[i] = temp;
lastReversedChar = j - 1;
break;
}
}
}
}
System.out.println(ch);
Комментарии:
1. Не совсем. Установите
lastReversedChar
значениеj - 1
. ideone.com/FQ5Ffe2. большое вам спасибо за ответ Calculuwhiz и за то, что все работают 😉