У меня проблема с Integer.parseInt (). В частности, мой код делает это:
Переменная serverPort - это int, правильно инициализированный до 1910
byte[] multicastMessage = (serverAddress+"::"+String.valueOf(serverPort)).getBytes();
byte[] receivedBytes = receivePacket.getData();
receivedString = new String(receivedBytes, "UTF-8");
String[] decodedString = receivedString.split("::");
serverPort = Integer.parseInt(decodedString[1]);
Обратите внимание, что когда я печатаю decodedString [1] в консоли, правильно печатается 1910. Но когда я вызываю Integer.parseInt (), возникает исключение NumberFormatException.
Я также пробовал использовать Integer.toString (serverPort) в первой строке или использовать new Integer (decodedString [1]). IntValue () в последней строке без успеха.
Я подозреваю, что проблема преобразования связана с использованием байта (я не могу этого избежать), но я не так хорошо знаком с байтовой структурой.
РЕДАКТИРОВАТЬ:
Exception in thread "Thread-0" java.lang.NumberFormatException: For input string: "1910"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at ClientThread.run(ClientThread.java:60)
serverPort = Integer.parseInt(decodedString[1].trim());
. Трудно сказать без трассировки стека, которую вы не предоставили. - person azurefrog   schedule 28.10.2016decodedString[1]
равно"1910"
, тогдаInteger.parseInt
не может вызвать исключение. Итак, если возникает исключение, что это означает? - person Tunaki   schedule 28.10.2016