Java交换字符,但不交换元音
我想交换字符串中除元音以外的字符。有很多代码,但是,这是我正在研究的一个,我发现它很容易理解,但这并没有产生预期的结果Java交换字符,但不交换元音,java,swap,Java,Swap,我想交换字符串中除元音以外的字符。有很多代码,但是,这是我正在研究的一个,我发现它很容易理解,但这并没有产生预期的结果 public class RandomPractise { //1st find out a vowel public Boolean isVowel(char c) { boolean isV = true; if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u
public class RandomPractise {
//1st find out a vowel
public Boolean isVowel(char c) {
boolean isV = true;
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
isV = true;
} else {
isV = false;
}
return isV;
}
//Check current and next chars if not vowel do the swap
public void randomTest() {
String str = "boat";
char[] c1 = str.toCharArray();
for (int i = 0; i < c1.length - 1; i++) {
if (!(isVowel(c1[i])) && !(isVowel(c1[i + 1]))) {
char temp = c1[i];
c1[i] = c1[i + 1];
c1[i + 1] = temp;
}
}
System.out.println(String.valueOf(c1));
}
public static void main(String[] args) {
RandomPractise r = new RandomPractise();
r.randomTest();
}
公共课随机练习{
//首先找出一个元音
公共布尔元音(字符c){
布尔isV=真;
如果(c='a'| c='e'| c='i'| c='o'| c='u'){
isV=真;
}否则{
isV=假;
}
返回isV;
}
//检查当前和下一个字符,如果不是元音,则进行交换
公开测试(){
String str=“船”;
char[]c1=str.toCharArray();
对于(int i=0;i
示例:如果我使用input:boat,我希望看到输出:toab[这不会发生]。当我使用input:sboant时,我看到输出bsoaht
问题:我应该做什么改变才能使它在船上工作 提前感谢您的时间。问题:我应该做什么更改才能使它在船上工作 你想这么做吗
public class RandomPractise {
//1st find out a vowel
public Boolean isVowel(char c) {
boolean isV = true;
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
isV = true;
} else {
isV = false;
}
return isV;
}
public void randomTest() {
String str = "boat";
char[] c1 = str.toCharArray();
int n = str.length();
for (int i = 0; i < n/2; i++) {
if (!(isVowel(c1[i])) && !(isVowel(c1[n - i - 1]))) {
char temp = c1[i];
c1[i] = c1[n - i - 1];
c1[n - i - 1] = temp;
}
}
System.out.println(String.valueOf(c1));
}
public static void main(String[] args) {
RandomPractise r = new RandomPractise();
r.randomTest();
}
公共课随机练习{
//首先找出一个元音
公共布尔元音(字符c){
布尔isV=真;
如果(c='a'| c='e'| c='i'| c='o'| c='u'){
isV=真;
}否则{
isV=假;
}
返回isV;
}
公开测试(){
String str=“船”;
char[]c1=str.toCharArray();
int n=str.length();
对于(int i=0;i
“sb”在[sb]中被替换为“bs”“宣誓”,因为“s”紧挨着“b”。在单词“boat”中,彼此之间没有辅音:“bo”是一对辅音元音,“oa”是元音元音,而“at”是元音辅音。您的程序只交换辅音对,没有这样的辅音对。像elect
这样的单词,您希望得到什么?遵循什么规则?Yes,这就是我想要的。谢谢。你能解释一下吗!(is元音(c1[n-I-1])这部分吗?我必须等4分钟才能接受。@SheikhRahman实际上,在字符串中获得正好相反的对称字符是一个技巧,例如,如果你有一个长度为7的字符串,那么如果你在索引0处,那么你将得到(n-I-1)作为6,如果你是索引1,那么(n-1-i)将得到5,如果在2,那么(n-1-i)将得到4,如果你是索引3,那么(n-1-i)这是一个快速反转字符串的标准技巧。如果不清楚,请告诉我。如果我错了,请纠正我。我检查了上面的程序,查看了字符串abcde
其打印的adcbe
,该字符串不正确,但应该是acbde
@rahulsharma我刚刚理解了OP对问题的描述n他写道。参见船的例子,在我回答问题后,op确认这是他想要的,因此根据op的要求,abcde的答案应该是“adcbe”而不是“acbde”,尽管我同意op提到问题的方式是含糊不清的。