我正在尝试从服务器获取文本,然后检查它以了解采用的文本要采取的操作。问题是,当我尝试检查接收到的文本是否为“已退出”时,如果收到的文本确实是“已退出”,则查询始终返回值“false”。
以下是代码:
class Get_Message_From_Server implements Runnable
{
public void run()
{
InputStream iStream = null;
try
{
iStream = Duplex_Socket_Acceptor.getInputStream();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//Create byte array of size image
byte[] Reading_Buffer = null;
try
{
Reading_Buffer = new byte [Duplex_Socket_Acceptor.getReceiveBufferSize()];
//New_Buffer = new byte [100];
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
byte[] Byte_Char_1 = new byte[1];
int Byte_String_Lenght = 0;
//read size
try
{
iStream.read(Reading_Buffer);
String Reading_Buffer_Stream_Lenghtor = new String(Reading_Buffer);
//System.out.println("full : " + Reading_Buffer_Stream_Lenghtor);
Byte_String_Lenght = Reading_Buffer_Stream_Lenghtor.indexOf(new String(Byte_Char_1));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//Convert to String
Meassage = new String(Reading_Buffer);
Meassage = Meassage.substring(0, Byte_String_Lenght);//The text that received
Message_Getted = 1;
}
}
查询:
if(Message_1 != "Exited")//the message query
{
System.out.println("Continued 253");
continue;
}
它总是返回值 - false
那我该如何解决这个问题?
答案 0 :(得分:0)
如果使用oparators比较字符串,Java将不会查看字符串的内容,而是查看内存中的引用。要比较Java中的String内容,您应该使用以下内容:
String Message_1; // Hopefully has a value sent by the server
if(Message_1.equals("Exited")) {
// Do stuff when exited
} else {
// Do stuff when not exited
}
答案 1 :(得分:0)
String是一个变量 - 变量应以小写字母开头 - 请阅读Java代码约定。另外要检查你的消息是否包含字符串,它应该只是System.out.println(Message_1);
,如果消息包含你期望的,你可以比较字符串做
if(Message_1.equals("Exited")) {
System.out.println("Yes they are equal");
} else {
System.out.println("No they are not");
}
如果这将打印“不,他们不是”,这只是意味着您的变量Message_1不是您认为的那样..就这么简单。没有这样的东西.equals方法不起作用。它是你的变量;)