У меня проблема с Integer.parseInt(). Конкретно мой код сделать это:NumberFormatException с 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) в первой строке или использовать новый Integer (decodedString [1]). IntValue() в последней строке без успеха.
Я подозреваю, что проблема с преобразованием родилась с использованием байта (я не могу этого избежать), но я не очень разбираюсь в структуре байтов.
EDIT:
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());'. Трудно сказать без stacktrace, который вы не предоставили. – azurefrog
Если 'decodedString [1]' равно '' 1910 ", то' Integer.parseInt' ** не может ** вызывать исключение. Итак, если возникает исключение, что это значит? – Tunaki
Добавлена трассировка стека. С trim() у меня такой же результат. «1910» НЕ равно decodedString [1] –