java中的Bizzare char[]issiu。can';t复制值并跳过空格

java中的Bizzare char[]issiu。can';t复制值并跳过空格,java,Java,这简直让我发疯。我希望你们中的一位大师能把我从塞满脑袋的厕所和唱歌中解救出来!我试图将一个字符数组复制到另一个字符数组,而不复制空格。这不是最终代码,因为它只解释“”而不解释其他各种形式的空白,即\t。但这不是主要问题 import java.io; import java.util.*; public class tester { public static void main(String args[]) throws Exception { Scanner in = ne

这简直让我发疯。我希望你们中的一位大师能把我从塞满脑袋的厕所和唱歌中解救出来!我试图将一个字符数组复制到另一个字符数组,而不复制空格。这不是最终代码,因为它只解释“”而不解释其他各种形式的空白,即\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]+" ");
    }
  }

}
导入java.io;
导入java.util.*;
公共类测试员
{
公共静态void main(字符串args[])引发异常
{
扫描仪输入=新扫描仪(新文件(“intxt.txt”);
字符串x=“”;
while(在.hasNext()中)
{
x=in.nextLine();
}
System.out.println(“此行有“+x.length()+”个字符”);
char[]charAr=x.toCharArray();
对于(int i=0;i

您的代码的其余部分不应该也在这个循环中吗?这个循环除了选择“intxt.txt”中的最后一行之外,是毫无意义的。

一个字符数组在构造时,是用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来构建输出字符串。

您的代码有什么问题

我认为一个很好的建议是,如果你不确定你正在使用的过程/算法的正确性,添加依赖输入的东西是不明智的

因此,我将使用期望从输入文件中读取的值初始化
x
。这是字符串
hello那里
,对吗?所以不是

Scanner in = new Scanner(new File("intxt.txt"));
String x = "";
while(in.hasNext())
{
  x = in.nextLine();
}
我只会写

String x = "hello there";
注意:我假设这是一个打字错误,但如果不是,第一行就错了。我想你是注定要写的

import java.io.*;
此外,编写更有意义的变量标识符。
lineRead
优于
x
,imho

编辑:如果您希望阅读
hellother
,且字符之间没有空格,则应删除每个
out[i]
中附加的空格

System.out.println(out[i]);

请花点时间重新格式化此代码。不要使用“你只需将代码行缩进4个空格即可”。谢谢!我是个新手,刚刚完成大四的第一学期。我坚持使用健壮的IDE,直到现在才使用记事本。我在eclipse中工作,遇到了一些奇怪的错误扫描对象和路径,所以我认为这是件奇怪的事……指节头:)感谢没有意义的朋友。我抓起这条线,把它发送给了查拉瑞()没有,这是我第一次用eclipse做一个真正的项目。我在尝试一个算法,我觉得我在eclipse中遇到了一些异常。我只是自己想:)
System.out.println(out[i]);