Eclipse - 功能问题

时间:2014-05-02 10:39:09

标签: android eclipse string

我正在尝试从服务器获取文本,然后检查它以了解采用的文本要采取的操作。问题是,当我尝试检查接收到的文本是否为“已退出”时,如果收到的文本确实是“已退出”,则查询始终返回值“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

  • 知道消息是Utf - 8编码
  • 非常重要

那我该如何解决这个问题?

2 个答案:

答案 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方法不起作用。它是你的变量;)