Java 将字符串中的元音替换为其后继元音示例snow将成为snpw

Java 将字符串中的元音替换为其后继元音示例snow将成为snpw,java,Java,我被问到一个问题,其中一个元音必须替换为前置元音。示例:“snow”应作为“snpw” import java.util.*; 班级发誓 { 公共静态void main(字符串参数[]) { 扫描仪输入=新扫描仪(系统输入); System.out.println(“请输入字符串”); 字符串str=in.nextLine(); 字符b; StringBuilder a=新的StringBuilder(str); 对于(int i=0;i您不应该打印值从未更改的str 尝试打印StringBuf

我被问到一个问题,其中一个元音必须替换为前置元音。示例:
“snow”
应作为
“snpw”

import java.util.*;
班级发誓
{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(系统输入);
System.out.println(“请输入字符串”);
字符串str=in.nextLine();
字符b;
StringBuilder a=新的StringBuilder(str);

对于(int i=0;i您不应该打印值从未更改的
str

尝试打印
StringBuffer的
对象,因为它包含替换项

System.out.println("New STring is:"+a.toString());
多亏了@Blip,我没有注意到另一个问题。只有当输入是元音时,才向StringBuffer的对象添加字符

以下是您的if测试的外观:

if((str.charAt(i)=='a')||(str.charAt(i)=='e')||(str.charAt(i)=='i')||(str.charAt(i)=='o')||(str.charAt(i)=='u'))
{
    b = str.charAt(i);
    b +=1;
    char temp;
    temp = b;
    b = str.charAt(i);
    a.setCharAt(i,temp);
    continue;
}
a.setCharAt(i, str.charAt(i));

输入输出
aeiou
->
bfjpv


这就是说,这里是对代码的修改,更易于编写和理解

Scanner in = new Scanner(System.in);
System.out.println("Enter String pls:");
String str = in.nextLine();
StringBuilder output = new StringBuilder();
for (char c : str.toCharArray()){
    if ("aeiou".contains(""+c)){
        output.append((char)(c+1));
    } else {
        output.append(""+c);
    }
}
System.out.println(output.toString());

你需要提供更多信息才能开始。到底出了什么问题?你有错误输出吗?请提供尽可能多的有用信息,否则你的问题可能会因懒惰而被否决(祝你考试顺利!)顺便问一下,它是前导词还是后继词?因为
b+=1
取后继词:
o
变成
p
,就像在你的例子中,但不是在你的文本中。另外,定义“元音”。是
“y”
a元音?不,y不是元音,它是成功的。您的解决方案有问题。如果原始字符串是abcd,则输出为b,或者如果是映射,则输出为b@Blip为什么这会是个问题?这正是OP想要解决的问题do@Blip非常感谢,我改变了答案。@Smittey就像问题itsel一样如果OP希望snow变成snpw,但是如果输出
StringBuffer
变量
a.toString()
,而不更改代码,那么输出将只是pyassin,你能解释一下逻辑吗?因为我很难理解它
Scanner in = new Scanner(System.in);
System.out.println("Enter String pls:");
String str = in.nextLine();
StringBuilder output = new StringBuilder();
for (char c : str.toCharArray()){
    if ("aeiou".contains(""+c)){
        output.append((char)(c+1));
    } else {
        output.append(""+c);
    }
}
System.out.println(output.toString());