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