2013-08-17 5 views
1

Я пытаюсь создать способ извлечения из хэш-таблицы идентификатора authorID для имени статьи, которое вводит пользователь. Вот код, который активируется на стороне клиента, когда пользователь нажимает на кнопку:не печатать в текстовое поле

public String getAuthorID() // returns a String 
    { 
      try 
     { 
      articleName = txtArticleName.getText(); 
      argAuthorID = new Vector();// create vector for the args 
      argAuthorID.addElement(articleName);// name to search for to get AuthorID 

      // make the call to the server 
      authorIDVector = (Integer)client.execute("GetSize.sendAuthorID", argAuthorID); 
      System.out.println(argAuthorID); 
      } 
      catch (XmlRpcException exception) { 
      System.err.println("JavaClient: XML-RPC Consumer Fault #" + 
      Integer.toString(exception.code) + ": " + 
           exception.getCause() + "" + exception.toString()); 
      } catch (Exception exception) { 
      System.err.println("JavaClient: XML-RPC Consumer Fault #" + exception.toString()); 
      } 
     String StrAuthorID = Integer.toString(authorID); // Cast AuthorID to String 
     return StrAuthorID; 
    } 

Это метод на стороне сервера:

public int sendAuthorID(String articleNameRequest) { 
     // get info from the hashtable 
     aNumber = (Integer) theHashtable.getAuthorID(articleNameRequest); // was this. 
     return aNumber; 
    } 

Это код в класс, который содержит хэш-таблица:

public int getAuthorID(String articleName) 
{ 
    int intfoundit; 
    String foundit = (String)hashtab.get(articleName); 
    System.out.print(foundit); 
    intfoundit = Integer.parseInt(foundit); 
    System.out.print(foundit); 
    System.out.print(intfoundit); 
    return intfoundit; 
} 

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

catch (XmlRpcException exception) { 
      System.err.println("JavaClient: XML-RPC Consumer Fault #" + 
      Integer.toString(exception.code) + ": " + 
           exception.getCause() + "" + exception.toString()); 

Это ошибка, которая дается:

«JavaClient: XML-RPC Consumer Fault # 0: nullorg.apache. xmlrpc.XmlRpcException: java.lang.Exception: java.lang.NumberFormatException: Для ввода строки: «3377»»

UPDATE: убрана пространство перед идентификационным номером в хэш-таблице и не бросаться ошибка anym но он по-прежнему не вводит идентификационный номер в текстовое поле, а просто вводит '0'

ответ

1

Кажется, что он не работает в случаях, когда в строке есть пробелы. Как мы можем видеть в своем следе исключения, что parseInt не удалось разобрать " 3377" и бросил NumberFormatException во время выполнения:

intfoundit = Integer.parseInt(foundit); 

Таким образом, вы можете попробовать trim строку и посмотреть, решает ли это проблему:

intfoundit = Integer.parseInt(foundit.trim()); 

Лучше вам следует делать обрезку, в которой вы сохраняете/кладете ключ/значение в хеш-таблицу.

+0

Я только что сделал это, и он исправил проблему, но метод по-видимому, фактически не возвращает идентификационный номер по какой-либо причине –

0

Ответ на первую проблему был пробелом перед идентификационным номером на хэш-таблице, потому что пространство не могло быть преобразовано в целое.

Ответ на второй проблемы в том, что следующая строка пытается преобразовать неправильный переменной

String StrAuthorID = Integer.toString(authorID); // Cast AuthorID to String 

, поскольку Integer был в AuthorID переменной

Я исправил это, изменив

 authorIDVector = (Integer)client.execute("GetSize.sendAuthorID", argAuthorID); 

до

 authorID = (Integer)client.execute("GetSize.sendAuthorID", argAuthorID); 
Смежные вопросы