1

我正在尝试创建一种从哈希表中检索用户输入的 articleName 的 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”'

更新:删除了哈希表中 ID 号之前的空格,它不再抛出错误,但它仍然没有将 ID 号输入到文本框中,而只是输入了一个“0”

4

2 回答 2

1

如果字符串中有空格,它似乎会失败。正如我们在您的异常跟踪中看到的那样,它parseInt无法解析" 3377" 并在执行时抛出NumberFormatException

intfoundit = Integer.parseInt(foundit);

所以你可以试试trim这个字符串,看看它是否能解决你的问题:

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

更好的是,您应该在将键/值保存/放入哈希表的位置进行修剪。

于 2013-08-17T13:59:33.717 回答
0

第一个问题的答案是哈希表上 ID 号之前的空格,因为该空格无法转换为整数。

第二个问题的答案是以下行试图转换错误的变量

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

因为整数在AuthorID变量中

我通过改变来纠正这个

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

        authorID = (Integer)client.execute("GetSize.sendAuthorID", argAuthorID);
于 2013-08-17T14:37:08.557 回答