Нуждаете се от още помощ. Работейки по мрежовото чат програмиране от серията от урок на Cherno. Имам 24 и този, когато нещата започнаха да се развалят. Стартирах сървъра, свързах се с него с локален клиент и се свързах с localhost, всичко това работи добре. Свързване Получавам тази грешка.
Exception in thread "Thread-0" java.lang.NumberFormatException: For input string: "8474"
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 com.josh.chat.ClientWindow$1.run(ClientWindow.java:78)
Задавам случайно 4-цифрено число и го присвоявам като идентификатор тук и тук грешката се отнася за:
public void listen() {
listen = new Thread() {
public void run() {
while(running) {
String message = client.receive();
if(message.startsWith("/c/")) {
message.trim();
client.setID(Integer.parseInt(message.split("/c/|/e/")[1]));
console("Successfully connected to server! ID: " + client.getID());
}
}
}
};
listen.start();
}
EDIT: добавя цялата функция
В / c / и / e / ТРЯБВА да работи добре, не виждам проблеми с тях.
Отговори:
0 за отговор № 1Ако String е наистина "8474", изключението не може да се случи. Така че бих казал, че String не е "8474". Може би има някакъв проблем с кодирането и някакъв скрит символ, който не виждате?
Опитвам:
String whatever = message.split("/c/|/e/")[1]).trim();
byte[] bytes = whatever.getBytes();
String str = new String(bytes, Charset.forName("utf-8"));
System.out.println(str); // control before trying to parse ...
client.setID(Integer.parseInt(str);