2017-02-04 1 views
0

Я программирую небольшую сервер-клиентскую программу, которая отправляет текст от одного клиента, который пишет в файл, другим клиентам с тем же именем файла и получил следующее сообщение об ошибке enter image description hereПри отправке целого с помощью PrintWriter с сервера на клиент невозможно разобрать синтаксический анализ

Но я просто послать целое и никаких других символов ...

Вот код:

сервера

String[] splitter = scanText.split("\n"); 
String length = splitter.length + ""; 

//sending scanText to clients 
for (PrintWriter pw2 : userMap.get(filename)) { 
    if(!pw2.equals(pw)) 
    { 
     pw2.println(length + "\n" + scanText); 
    } 
} 

Client

класс "UpdateInBackground" класс, который находится в клиент-класса

class UpdateInBackground extends Thread { 

    @Override 
    public void run() { 
     int lines; //to know how much lines are send from the server 
     String scanText; 
     while (!this.isInterrupted()) { 
      scanText = ""; 
      lines = Integer.parseInt(sc.nextLine()); //here I get the error 
      while (lines-- > 0) { 
       scanText += sc.nextLine() + "\n"; 
      } 
      output.setText(scanText); 
     } 

    } 
} 

ответ

0

@asparagus, пожалуйста, определить СБН в линии sc.nextLine(), учитывая, что это объект из класса Сканер, мне нужно знать ввод. Вопрос должен быть понятным с помощью определений переменных и каковы исходные данные.

В классе UpdateInBackground, линии = Integer.parseInt (sc.nextLine()); // здесь nextLine() для любой строки, пожалуйста, обратитесь documentation

Причину NumberFormatException: Вы преобразуете значение int, не зная, что получает в качестве входных данных.

Попробуйте использовать обработку исключений, чтобы знать, какие типы ошибок могут возникнуть, чтобы избежать попадания программы.

+0

Благодарим вас за ответ! Но почему персонажи, которые, очевидно, не могут быть показаны в выводе, находятся перед количеством строк (1)? – asparagus

+0

Могу ли я узнать ваш вход (sc.nextLine()) или набор входов, поэтому я могу помочь вам в решении. – Rubal

+0

, чтобы проверить ненужный символ, добавив его, просто распечатайте на консоли следующим образом: System.out.println (sc.nextLine(). Length), прежде чем разбирать его на Integer. – Rubal

Смежные вопросы