@nikesport

Как сравнить строку получамую после парсинга с json с обычной строкой ?

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

import javax.xml.crypto.Data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ComplexSocketServer {

public static void main(String args[]) throws Exception {
ServerSocket servSocket;
Socket fromClientSocket;
int cTosPortNumber = 3232;
String str;
ComplexCompany comp;

servSocket = new ServerSocket(cTosPortNumber);
System.out.println("Waiting for a connection on " + cTosPortNumber);

Socket si = servSocket.accept();
System.out.print("Соединилось");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(si.getOutputStream());
DataInputStream ois = new DataInputStream(si.getInputStream());
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson((String) ois.readUTF(), JsonObject.class);

String number = jsonObject.get("KEY").toString();
System.out.println(number);
String strr = "CHECK_MESSAGE";
if (number == strr){
System.out.println(number);
}
}
}
содержимое обоих строковых переменных CHECK_MESSAGE но они не сравниваються ни как, if не находит соответствия между number и strr, в чем причина не могу понять ?
  • Вопрос задан
  • 2711 просмотров
Пригласить эксперта
Ответы на вопрос 4
@d_f
Математик минус программист
Может потому, что сначала стоит изучить основы Java и понять, что через == сравниваются адреса строк, а не сами строки?
Для сравнения строк необходимо переписать условие:
if (number.equals(strr)){
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ставим в коде бряку, смотрим что на самом деле содержится в переменных, ищем ошибку.
Ответ написан
CTAKAH4uK
@CTAKAH4uK
Сравнение только через equals, видимо разнится кодировка, либо DataInputStream добавляет конец строки или еще чего
String number = new String(jsonObject.get("KEY").toString().getBytes(), "UTF-8");
String strr = new String("CHECK_MESSAGE".getBytes(), "UTF-8");
Ответ написан
Комментировать
targetjump
@targetjump
Юзай equals, если строки "выглядят одинаково" и в то же время они не equals, то сравни байты строк и увидишь что они разные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы