我有一个需要使用套接字的作业。在客户端和服务器端,我有 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
答案 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));
让我想到一些事情的作品:
您的代码中声明的数组不相等。
有一个字符集不兼容,你说你使用的是BufferedReader,如果你正在使用Java 1.7的Files.newBufferedReader()功能,你需要在使用时指定一个字符集,这可能是导致问题。
来自跨平台系统或其他内容的行结束问题,例如: \ r vs \ n
稍微考虑一下......它可能是#2,请查看以获取更多信息:http://docs.oracle.com/javase/tutorial/i18n/text/string.html