sinat_33415638
sinat_33415638
采纳率36.8%
2016-01-19 05:41 阅读 1.4k

小白求教arraylist问题

for(int c=0;c<date1.size();c++){
if(date1.get(c).equals(date1.get(c+1))){
a=(int) value1.get(c);
sum=a+sum;
System.out.println("a:"+a+"sum:"+sum);
}else{
a=(int) value1.get(c);
sum=a+sum;
System.out.println("a:"+a+"sum:"+sum);
date2.add(date1.get(c));
value2.add(sum);
sum=0;
}

    }

我日期数组,判断第一个日期等于下一个日期,判断到最后怎么办,最后一个日期的下一个日期是空的,报数组越界异常

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

7条回答 默认 最新

  • a8761087 GrowingDarker 2016-01-19 06:28

    第一行改成 date1.size()-1 就OK了。因为前一个已经判断了下一个,所以最后一个不用判断

    点赞 1 评论 复制链接分享
  • 91program 91program 2016-01-19 06:29

    你的代码中,for 语句中有这样的判断:c<date1.size(),就可以保证 c 的值小于日期数组的大小。
    在 for 的循环中,也不要出现类似于这样的表达式:c+1。因为它会导致到最后一个元素时,它越界了。

    如果要使用 c+1,则需要修改 for 循环的判断,使用 c<date1.size() -1.因为最后一个日期是不可能等于它后面的日期的!不需要判断!!!

    点赞 1 评论 复制链接分享
  • Theresa_zxx ProXin 2016-01-19 06:04

    每次判断是否到最后一个日期

     for(int c=0;c<date1.size();c++){
                if(c < date1.size()){
                    if(date1.get(c).equals(date1.get(c+1))){
                    a=(int) value1.get(c);
                    sum=a+sum;
                    System.out.println("a:"+a+"sum:"+sum);
                }
            }else{
                if(c < date1.size()){
                    a=(int) value1.get(c);
                    sum=a+sum;
                    System.out.println("a:"+a+"sum:"+sum);
                    date2.add(date1.get(c));
                    value2.add(sum);
                    sum=0;
                }
            }
    
    点赞 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2016-01-19 06:06

    你的循环体里面同时使用了c,c+1两个位置的值,而结束条件是c<date1.size(),这个条件错误。
    如果C是最后一个元素的下标,那么C+1就越界了。修正:

            for(int c=0;c+1<date1.size();c++){
                 if(date1.get(c).equals(date1.get(c+1))){
                 a=(int) value1.get(c);
                 sum=a+sum;
                 System.out.println("a:"+a+"sum:"+sum);
                 }else{
                 a=(int) value1.get(c);
                 sum=a+sum;
                 System.out.println("a:"+a+"sum:"+sum);
                 date2.add(date1.get(c));
                 value2.add(sum);
                 sum=0;
                 }
                    }
    
    点赞 评论 复制链接分享
  • piaoxueergogo 云_123 2016-01-19 06:35

    for(int c=0;c+1<date1.size();c++){
    ||
    for(int c=0;c+1<date1.size()-1;c++){
    即可

    点赞 评论 复制链接分享
  • enpterexpress 把分全给哥 2016-01-19 06:35

    判断一下数组的长度,然后决定做几次比较

    点赞 评论 复制链接分享
  • qq_17194815 bigger_bug 2016-01-19 11:52

    加个if判断是否已经是最后一个日期

    点赞 评论 复制链接分享

相关推荐