if (x[i] != 32)
{
y[i] = x[i];
}
这是循环的一部分,它反复遍历x数组中的每个char,如果不是空格则将它放在y数组中。但无论如何,他们的阵列都会以空间结束。这意味着这个if语句正在执行,无论天气如何,所讨论的char都是' '是不是char。 如何使if语句实际工作?
答案 0 :(得分:1)
因为您使用相同的索引' i'对于这两个阵列,你要留下一个“洞”'在' y'找到任何空间的数组:
if (x[i] != ' ') {
y[i] = x[i];
}
使用两个不同的索引(但请注意,我猜这些索引已初始化为' i length',最后会有漏洞),例如:
int i = 0;
int j = 0;
while (i .... {
if (x[i] != ' ') {
y[j++] = x[i];
}
...
}
答案 1 :(得分:1)
看起来你正在跳过索引。如果您在数组1中的索引2处,那么您将char放在数组2中的索引2处 - 留下您之前未发布字符的空格。
要完成这项工作,您可能需要跟踪索引:
if (x[i] != 32) {
y[i] = x[index];
index ++;
}
答案 2 :(得分:0)
我不知道空间代码是否实际上是32但是你走的y数组与x的索引相同,所以它将字符复制到相同的位置,留下间隙(0)。
答案 3 :(得分:0)
问题不在比较中。 我想你正在运行这样的代码:
char[] x = new char[]{'a','b',' ','c'};
char[] y = new char[4];
for (int j = 0; j < x.length; j++) {
if (x[j] != 32) {
y[j] = x[j];
}
}
for (int i = 0; i < y.length; i++) {
System.out.println(y[i]);
}
使用\ u0000初始化char数组,打印出空字符。因此,即使比较失败,它也会将初始char值保持在该位置。
尝试运行以下代码,您将看到比较失败:
char[] x = new char[]{'a','b',' ','c'};
char[] y = new char[4];
for (int j = 0; j < x.length; j++) {
if (x[j] != 32) {
System.out.print(x[j] + ", ");
}
}
结果:a,b,c,