我必须用Java编写一个程序,通过切换字母'e'和'o'来替换'Hello,World'中的字母,这样程序的输出就会是 “Holle,Werld”。我尝试使用以下代码执行此操作,但已经意识到所有o都是e,而e将保持为e。我知道e正在覆盖o,但我只是不知道如何修复。我目前的输出是'Helle Werld'。再次,我想要“Holle,Werld”。谢谢!
import java.util.Scanner;
public class E2U7
{
public static void main(String[] args)
{
String river = "Hello, World";
river = river.replace("e","o");
river = river.replace("o","e");
System.out.print(river);
}
}
答案 0 :(得分:5)
您可以在字符串中使用字符串char:
public class JavaTestiMain {
public static void main(String[] args)
{
String river = "Hello, World";
StringBuilder sb=new StringBuilder();
for (char c : river.toCharArray()){
if(c == 'e'){
sb.append('o');
}
else if (c=='o'){
sb.append('e');
}
else{
sb.append(c);
}
}
System.out.println(sb.toString());
}
}
因为你是一个先发者,一个(希望)可以理解的解释:基本上,你从第一个符号开始循环给定的字符串。如果是e,请在临时解决方案中添加o,如果是o,则添加e,如果是另一个char,则添加它。最后从StringBuilder获取最终的String。 在这种情况下,您不能将您的电子邮件更改为“蚂蚁”,然后将“全部更改为”。
其他答案的优点是,如果中间符号位于起始字符串中,则不会引起问题。
答案 1 :(得分:3)
使用中间符号
import java.util.Scanner;
public class E2U7
{
public static void main(String[] args)
{
String river = "Hello, World";
river = river.replace("e","x");
river = river.replace("o","e");
river = river.replace("x","o");
System.out.print(river);
}
}
编辑1: 正如评论中所述,这是一个解决方案,但不是最好的,因为它依赖于输入字符串上可能出现的中间字符。我不会更新我的答案,因为已经发布了更好的方法(参见@ThomasBöhm的回答)。
答案 2 :(得分:1)
以下是您尝试完成的流程版本:
String result = Arrays.stream(river.split(""))
.map(c -> c.equals("e")? "o" : c.equals("o")? "e" : c)
.collect(Collectors.joining());
答案 3 :(得分:0)
您可以尝试这样的事情:
river = river.replace("e","_");
river = river.replace("o","e");
river = river.replace("_","o");
使用不在输入字符串上的临时字符!
答案 4 :(得分:0)
您可以在main方法中替换此代码
String river = "Hello, World";
String str = river;
river = river.replaceAll("e","*");//o
river = river.replaceAll("o","#");//e
river = river.replaceAll("\\*","o").replaceAll("#","e");
System.out.print(river);