java - java 中奇怪的 char[] siu 。无法复制值并跳过空格

标签 java

B 和 G 这让我发疯。我希望你们中的一位大师能够拯救我,让我不再把头塞进厕所唱歌!我正在尝试将一个字符数组复制到另一个数组而不复制空格。这不是最终代码,因为它只考虑 ' ' 而不是各种其他形式的空白,即\t。但这不是主要问题。

import java.io;
import java.util.*;

public class tester
{
  public static void main(String args[]) throws Exception
  {
    Scanner in = new Scanner(new File("intxt.txt"));
    String x = "";
    while(in.hasNext())
    {
      x = in.nextLine();
    }
    System.out.println("This line has  " + x.length() + "characters.");
    char[] charAr = x.toCharArray();
    for(int i = 0; i<charAr.length; i++)
    {
      //prints the int representation of all values
      System.out.print((int)charAr[i] + "  ");
    }
    char[] out = new char[charAr.length];
    for(int i =0; i<out.length; i++)
    {
      char y = ' ';
      if(charAr[i] != y)
      {
        System.out.println("in here " + (int)y);
        out[i] = charAr[i];
      }
    }
    for(int i = 0; i<out.length; i++)
    {
      //should print hellothere
      System.out.print(out[i]+" ");
    }
  }

}

最佳答案

char 数组在构造时会用 0 填充。

如果输出字符数组元素 i 不是空格,则循环将其设置为与输入字符数组元素 i 相同的值。否则,它将保持输出元素不变(因此其值为 0)。

您需要为输入数组和输出数组设置单独的索引,因为您想跳过空格。因此,假设输入数组有 8 个字符,其中两个是空格,则应填充输出数组的前 6 个元素,最后两个元素应设置为您希望设置的任何内容。

        0 1 2 3 4 5 6 7 8 9 10
input:  h e l l o   t h e r e
output: h e l l o t h e r e ?

您在上面的示例中看到字符的索引不匹配。

我认为这是某种家庭作业。如果不是,那么请务必使用 StringBuilder 来构建输出字符串。

关于java - java 中奇怪的 char[] siu 。无法复制值并跳过空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21799499/

相关文章:

java - 锁在 API 中等待,以防暴露

java - Hibernate脏对象的使用

java - 如何知道程序监听哪个端口

java - org.json.JSONException : No value for id - IMPOSSIBLE TO SOLVE

java - 如果我的员工没有重复完成,我该如何停止线程?

java - 添加更多按钮不起作用 - ScoreBook.java

java - 从文本文件中读取数据并将其保存到二维数组中

java - 如何防止 JavaFX 中的窗口太小?

java.rmi.NoSuchObjectException : no such object exception

java - 沿着步行道找到 "Big Steps"的号码