新手求助,关于字符串转换整形问题

sjw8072336 2011-06-21 03:55:55

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.lang.*" %>
<%
String a = "000000001";
String b = "000000002";
int aa = Integer.parseInt(a);
int bb = Integer.parseInt(b);
if(bb>aa){
out.print(123);
}else{
out.print(456);
}
%>

如上代码运行正常但是修改 a和b的初始值就会报错

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.lang.*" %>
<%
String a = "8000000001";
String b = "8000000002";
int aa = Integer.parseInt(a);
int bb = Integer.parseInt(b);
//Integer aa = Integer.parseInt(a);
//Integer bb = Integer.parseInt(b);//这样也报错
if(bb>aa){
out.print(123);
}else{
out.print(456);
}
%>

a和b是10位数 怎么才能正常比较
怎么解决求各位大哥帮忙,谢谢。
...全文
70 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
acertang 2011-06-21
  • 打赏
  • 举报
回复
INT类型最大值不能超过9位。改成如下:

String a = "8000000001";
String b = "8000000002";

long aa = Long.parseLong(a);
long bb = Long.parseLong(b);

if(bb>aa){
System.out.println(bb+"");
}else{
System.out.println(aa+"");
}
chchawen 2011-06-21
  • 打赏
  • 举报
回复
写错了,aa应该改成a
chchawen 2011-06-21
  • 打赏
  • 举报
回复
java的integer是32位的。范围在-2147483648 到2147483648
Integer.MAX可以查看它的范围
你的8000000001超过的integer的存储范围了,造成内存溢出了
如果确定了不超过18位的话可以先截取在比较
if(integer.paresInt(aa.subString(0,9))>integer.paresInt(b.subString(0,9))){
out.print("a大");
}else if(integer.paresInt(aa.subString(0,9))<integer.paresInt(b.subString(0,9))){
out.print("b大");
}else if(integer.paresInt(aa.subString(9))>integer.paresInt(b.subString(9))){
out.print("a大");
}else{
out.print("b大");
}
sjw8072336 2011-06-21
  • 打赏
  • 举报
回复
谢谢了 嘿嘿 太感谢了
剑神一笑 2011-06-21
  • 打赏
  • 举报
回复
int 范围为-2,147,483,648 到 2,147,483,647
String a = "8000000001";
String b = "8000000002";
long aa = Long.parseLong(a);
long bb = Long.parseLong(b);

我这样是没报错的 换long吧少年
剑神一笑 2011-06-21
  • 打赏
  • 举报
回复
这种纯java的东西就别再jsp里面折腾了吧
应该是int放不下了 换long试试
sjw8072336 2011-06-21
  • 打赏
  • 举报
回复
double 也不行啊 只要首位大于等于3就超过范围了··· 郁闷啊
亲努力啊 2011-06-21
  • 打赏
  • 举报
回复
String a = "8000000001";
String b = "8000000002";
超过int 大小了换double
sjw8072336 2011-06-21
  • 打赏
  • 举报
回复
long试过 也不行
sjw8072336 2011-06-21
  • 打赏
  • 举报
回复
是的 数字太大才报错啊
解未知数 2011-06-21
  • 打赏
  • 举报
回复
Integer换成Long
解未知数 2011-06-21
  • 打赏
  • 举报
回复
还有一个可能,数字太大了
解未知数 2011-06-21
  • 打赏
  • 举报
回复
报什么错啊?
你try一下试一试

try {
String a = "8000000001";
String b = "8000000002";
int aa = Integer.parseInt(a);
int bb = Integer.parseInt(b);
//Integer aa = Integer.parseInt(a);
//Integer bb = Integer.parseInt(b);//这样也报错
if(bb>aa){
out.print(123);
}else{
out.print(456);
}
}catch(Exception e){
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧