为什么老提示数组越界??????????

ooo19841080xinxin 2008-02-27 11:33:05

public class TestStr
{
public static void main(String args[])
{
long s1=1234567890123456l;
long s2=0000000001111001l;
String it1=String.valueOf(s1);
String it2=String.valueOf(s2);
char[] ch1=it1.toCharArray();
char[] ch2=it2.toCharArray();
StringBuffer s=new StringBuffer();

for(int i=0;i<ch1.length;i++)
{
if((ch1[i]!='0')&&(ch2[i]!='0'))
{
s.append(ch1[i]);
}
}
System.out.println(s);
}
}
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pastom 2008-02-28
  • 打赏
  • 举报
回复
楼上的正解
枫叶rain 2008-02-28
  • 打赏
  • 举报
回复
long s1=1234567890123456l;
long s2=0000000001111001l;
你把两个的长度打印出来检查一下就可以了
肯定是这的问题啊
iambic 2008-02-28
  • 打赏
  • 举报
回复
long常量请用L结尾,避免看错。
a1405 2008-02-28
  • 打赏
  • 举报
回复
换完后先把他们打出来看看是不是一样长
墨水鱼 2008-02-27
  • 打赏
  • 举报
回复
问题就在:
		long s2 = 0000000001111001l;
String it2 = String.valueOf(s2);

原因是s2以0开头,java认为它是八进制数字,所以valueOf以后就是299521(十进制)
因此ch2.length==6,程序运行到i=6的时候就会出错。
hp5212000 2008-02-27
  • 打赏
  • 举报
回复
ch1.length = 16;
ch2.length = 6;

两个都不一样长度,是否?

lz好运~
ooo19841080xinxin 2008-02-27
  • 打赏
  • 举报
回复
感觉代码没问题呀!!!

62,614

社区成员

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

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