title: Why don't the two equal strings match?
body: <p>I want to compare the <strong>response from the server</strong> with a <strong>string</strong>, but I get a false result when testing the two strings. Why?</p>
  
  <p><em>I found this but didn't help: <a href="https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java/513839?s=1|454.1926#513839">How do I compare strings in Java?</a></em></p>
  
  <p><strong>I tried two ways:</strong></p>
  
  <pre><code>BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF8"));
  String code;
  if(Objects.equals((code = in.readLine()), "S")) { //Input string: "S"
      //code
  }
  </code></pre>
  
  <p> </p>
  
  <pre><code>BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF8"));
  String code;
  if((code = in.readLine()).equals("S")) { //Input string: "S"
      //code
  }
  </code></pre>
  
  <p>The code does not run in either case because the value of the test is <strong>false</strong>.</p>
  
  <h1>Full code</h1>
  
  <h2>Server side - C# (Windows)</h2>
  
  <pre><code>class ManagePhoneClients
      {
          public void managePhoneClients(object obj)
          {
              Boolean socketalive = true;
              TcpClient tcpClient = (TcpClient)obj;
              StreamReader sr = new StreamReader(tcpClient.GetStream(), Encoding.UTF8);
              StreamWriter sw = new StreamWriter(tcpClient.GetStream(), Encoding.UTF8);
              Boolean isPhoneClientConnected = false;
              String user;
              String answer;
              String tl;
              List&lt;string&gt; LC = new List&lt;string&gt;();
              Boolean qss = false;
              Program program = new Program();
              Int32 points = 0;
  
              ConsoleMethods.writeLine("Thread started for the phone client.", "Info", ConsoleColor.Cyan);
  
              sw.WriteLine("S");
              sw.Flush();
  
              while (socketalive == true)
              {
                  try
                  {
                      if (Program.isMainClientConnected != true || Program.isPowerPointConnected != true)
                      {
                          ConsoleMethods.writeLine("Connection refused because the necessary clients are not connected!", "Error", ConsoleColor.Red);
                          sw.WriteLine("NS");
                          sw.Flush();
                          tcpClient.Close();
                          socketalive = false;
                      }
                      else
                      {
                          sw.WriteLine("LC");
                          sw.Flush();
                      }
                      if (isPhoneClientConnected != true &amp; sr.Peek() != -1)
                      {
                          String rLC = sr.ReadLine();
                          LC.AddRange(rLC.Split('|'));
                          if (LC[1].ToString() == Program.passPhoneClient)
                          {
                              user = LC[0];
                              Program.userNames.Add(user);
                              ConsoleMethods.writeLine("Phone connected from: " + tcpClient.Client.RemoteEndPoint, "Info", ConsoleColor.Cyan);
                              sw.WriteLine("S");
                              sw.Flush();
                              Program.utnr = rLC;
                              isPhoneClientConnected = true;
                          }
                          else
                          {
                              sw.WriteLine("NS");
                              sw.Flush();
                              socketalive = false;
                              ConsoleMethods.writeLine("Phone client disconnected because the password was invalid!", "Error", ConsoleColor.Red);
                          }
  
                      }
                      switch (sr.ReadLine())
                      {
                          case "CLIENT-EXCEPTION":
                              ConsoleMethods.writeLine("Exception in phone client from: " + tcpClient.Client.RemoteEndPoint + "\n" + sr.ReadLine(), "Client-Error", ConsoleColor.DarkRed);
                              break;
                          case "RECEIVED_POINTS":
                              int point = int.Parse(sr.ReadLine());
                              points += point;
                              ConsoleMethods.writeLine("Phone client succesfully completed a task from: " + tcpClient.Client.RemoteEndPoint + " Point: " + point, "Client-Received Points", ConsoleColor.DarkRed);
                              ConsoleMethods.writeLine("Phone client collected points from: " + tcpClient.Client.RemoteEndPoint + " Points: " + points, "Client-Collected Points", ConsoleColor.DarkRed);
                              break;
                      }
  
                  }
                  catch (Exception e)
                  {
                      tcpClient.Close();
                      socketalive = false;
                      ConsoleMethods.writeLine(e.Message + e.StackTrace + e.StackTrace, "Error", ConsoleColor.Red);
                  }
              }
          }
      }
  </code></pre>
  
  <p><em>(This is not yet complete!)</em></p>
  
  <h2>Client side - Java (Android)</h2>
  
  <pre><code>   public void login(View v) {
          final Context context = this;
          new Thread(new Runnable() {
              public void run() {
                  try {
                      final Socket socket = new Socket("192.168.0.104", 90);
                      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF8"));
                      PrintWriter out = new PrintWriter(socket.getOutputStream());
                      out.print("P" + "\r\n");
                      out.flush();
                      String code;
                      code = in.readLine();
                      if(code.equals("S")) {
                          if (Objects.equals((code = in.readLine()), "LC")) {
                              out.print(((EditText)findViewById(R.id.username)).getText().toString() + "|" + ((EditText)findViewById(R.id.password)).getText().toString() + "\r\n");
                              out.flush();
                              if(Objects.equals((code = in.readLine()), "S")) {
                                  new ServerContact(context).Listener(socket);
                                  startActivity(new Intent(Login.this, Waiting.class));
                              } else {
                                  throw new Exception("Login failed because the server refused the login request. Server responded with status code: '" + code + "'.");
                              }
                          } else {
                              throw new Exception("Login failed because the server refused the login request. Server responded with status code: '" + code + "'.");
                          }
                      } else {
                          throw new Exception("Login failed because the server refused the login request. Server responded with status code: '" + code + "'.");
                      }
                  } catch (Exception e) {
                      new ExceptionWriter(e);
                  }
              }
          }).start();
      }
  </code></pre>
  
  <p><em>(This is not yet complete!)</em></p>