Java “为什么没有变化?”;z";字符串数组元素?
我正在练习一个程序,在这个程序中,我用“E”替换所有的“S”,反之亦然。必须在几个字符串中完成此任务 我尝试过几种方法(比如使用replace()),但我不明白哪里出了问题Java “为什么没有变化?”;z";字符串数组元素?,java,string,replace,Java,String,Replace,我正在练习一个程序,在这个程序中,我用“E”替换所有的“S”,反之亦然。必须在几个字符串中完成此任务 我尝试过几种方法(比如使用replace()),但我不明白哪里出了问题 int a; Scanner s = new Scanner(System.in); a = s.nextInt(); String[] x = new String[a]; String[] z = new String[a]; for (int i = 0; i < a; i++) { x[i] = s.n
int a;
Scanner s = new Scanner(System.in);
a = s.nextInt();
String[] x = new String[a];
String[] z = new String[a];
for (int i = 0; i < a; i++) {
x[i] = s.next();
}
for (int i = 0; i < a; i++) {
z[i]=x[i].replaceAll("S","A");
z[i]=x[i].replaceAll("E","S");
z[i]=x[i].replaceAll("A","E");
System.out.println(z[i]);
}
inta;
扫描仪s=新的扫描仪(System.in);
a=s.nextInt();
字符串[]x=新字符串[a];
字符串[]z=新字符串[a];
for(int i=0;i
对于字符串SEES,显示的结果应该是ESSE,但答案是SEES。您要做的是:
int a;
Scanner s = new Scanner(System.in);
a = s.nextInt();
String[] x = new String[a];
String[] z = new String[a];
for (int i = 0; i < a; i++) {
x[i] = s.next();
}
for (int i = 0; i < a; i++) {
z[i]=x[i].replaceAll("S","A");
z[i]=z[i].replaceAll("E","S");
z[i]=z[i].replaceAll("A","E");
System.out.println(z[i]);
}
inta;
扫描仪s=新的扫描仪(System.in);
a=s.nextInt();
字符串[]x=新字符串[a];
字符串[]z=新字符串[a];
for(int i=0;i
请注意从x[i].replaceAll
到z[i].replaceAll
的两个更改,使用此行:
z[i]=x[i].replaceAll("S","A");
z[i]=x[i].replaceAll("E","S");
z[i]=x[i].replaceAll("A","E");
将更改存储在z[i]
中。然后用这句话:
z[i]=x[i].replaceAll("S","A");
z[i]=x[i].replaceAll("E","S");
z[i]=x[i].replaceAll("A","E");
您可以用新的更改覆盖z[i]
中以前的更改最后一句话:
z[i]=x[i].replaceAll("S","A");
z[i]=x[i].replaceAll("E","S");
z[i]=x[i].replaceAll("A","E");
您将再次覆盖z[i]
中以前的更改因此,如果原始字符串是
SEES
,那么最后一行将把所有A
s替换为E
s,因为SEES
中没有A
,所以字符串保持不变。程序中的问题是,您没有意识到x[i]。replaceAll()
不会更改x[i]的值
。只有返回的字符串
具有替换的值
您可以使用下面的程序中的单个数组来实现这一点
import java.util.Arrays;
public class StringReplace {
public static void main(String[] args) {
String[] x = new String[4];
x[0] = "S";
x[1] = "E";
x[2] = "E";
x[3] = "S";
System.out.println("Input: " + Arrays.toString(x));
for (int i = 0; i < 4; i++) {
x[i]=x[i].replaceAll("S","A");
x[i]=x[i].replaceAll("E","S");
x[i]=x[i].replaceAll("A","E");
}
System.out.println("Output: " + Arrays.toString(x));
}
}
不确定你想做什么,但是<代码> Z[i]=x[i]。RePoTALL(“a”,“e”)是最后一个,击败所有的组合。注意,如果在你的字符串中没有<代码> < /代码>,它只会正常工作。甚至是
'\0'
或'\377'
作为'S'
的临时替代品,以避免意外地将“real”'A'
S变成'E'
S。