从char数组中删除所有空格。无法弄清楚如何让它发挥作用

时间:2015-02-19 23:52:32

标签: java

  if (x[i] != 32)                 
            {

            y[i] = x[i];
           }

这是循环的一部分,它反复遍历x数组中的每个char,如果不是空格则将它放在y数组中。但无论如何,他们的阵列都会以空间结束。这意味着这个if语句正在执行,无论天气如何,所讨论的char都是' '是不是char。 如何使if语句实际工作?

4 个答案:

答案 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,