不能与类“java.lang.String中”投对象“(10)”上课“java.lang.Integer中的”

时间:2014-11-27 07:05:09

标签: oracle plsql jasper-reports

我正在使用ireport 3.7.1。我已经建立了与我的数据库的连接。我有一个程序,当给出一个数字输入时,它返回数字的单词格式,即如果我给输入10,它将返回十。问题是当我在pl/sql开发人员中执行该过程时,我得到了正确的输出但是当我在ireport中触发相同的过程时,它给了我这个例外 Cannot cast object '(10)' with class 'java.lang.String' to class 'java.lang.Integer'

2 个答案:

答案 0 :(得分:1)

无法直接从String转换为Integer。您将要使用函数Integer.parseInt(stringNumber);

答案 1 :(得分:1)

(10)不是一个正确格式化的整数。甚至不适用于PL / SQL:

select '(10)' +0 from dual;

> ORA-01722: invalid number

我只能建议您追溯那些( )来自哪里。并将代码修改为 位置。只是一个疯狂的猜测,一些数字格式使用括号来表示数字。也许这是你的情况?


话虽如此,如果您仍想在本地删除以某种方式潜伏在字符串中的括号:

String str = "(10)";
int value = Integer.parseInt(str.substring(1, str.length()-1));
//                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                   *blindly* get away of first and last character
//                    assuming those are `(` and `)`

对于更健壮的东西,假设括号表示负数,你应该尝试一些正则表达式:

    String str = "(10)";
    str = str.replaceFirst("\\(([0-9]+)\\)", "-$1");
    //                      ^^^        ^^^    ^
    //                   replace integer between parenthesis by its negative value
    //                   i.e.: "(10)" become "-10" (as a *string*)

    int value = Integer.parseInt(str);