Java char数组相等不起作用

时间:2014-03-22 01:58:42

标签: java arrays char equals

我有一个需要使用套接字的作业。在客户端和服务器端,我有 char [] value =“END STREAM”。toCharArray(),表示要关闭的流。

由于我在两个不同的文件中都有这两个数组,我的意图是客户端发送消息值>服务器。然后服务器执行功能

while(!Arrays.equals(clientSentence, value))
{
...
inFromClient.read(clientSentence, 0, length);  //to read in from client side
.....
}

本质上,虽然它不发送END STREAM消息,但继续阅读。我的问题是数组相等不能按预期工作。我甚至通过

来测试这个
System.out.println(Arrays.equals(value, clientSentence));
System.out.println(new String(value));
System.out.println(new String(clientSentence));

并打印

false
END STREAM
END STREAM

打印相同值时怎么会出错?我确保两个数组都初始化为相同的长度,所以哪里出错了?我被困在这几个小时,并寻找答案,但无法找到解决方案。感谢

编辑:添加了我的阅读功能。我使用BufferedReader

1 个答案:

答案 0 :(得分:1)

在我的包装盒上:

char[] x = "END STREAM".toCharArray();
char[] y = "END STREAM".toCharArray();
System.out.println(Arrays.equals(x, y));
System.out.println(Arrays.toString(x));
System.out.println(Arrays.toString(y));

让我想到一些事情的作品:

  1. 您的代码中声明的数组不相等。

  2. 有一个字符集不兼容,你说你使用的是BufferedReader,如果你正在使用Java 1.7的Files.newBufferedReader()功能,你需要在使用时指定一个字符集,这可能是导致问题。

  3. 来自跨平台系统或其他内容的行结束问题,例如: \ r vs \ n

  4. 稍微考虑一下......它可能是#2,请查看以获取更多信息:http://docs.oracle.com/javase/tutorial/i18n/text/string.html