吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1482|回复: 6
收起左侧

[已解决] intel ide问题 【 上一个帖子没有阐述清楚】

[复制链接]
luanshils 发表于 2019-8-13 07:34
本帖最后由 luanshils 于 2019-8-13 11:24 编辑

之前的一个帖子,大家都说我输出的bound越界,但其实是我之前嫌数组太长,就给它咔嚓掉,然后截图了,后面修改的输出长度没截图上来。

亲测,实际就是数组长度不变,在我程序末尾也是有红字报错



[Java] 纯文本查看 复制代码
package test;
import java.util.ArrayList;
import java.util.Random;
//新建一个大集合,大集合内包含100之间的随机数,取指偶数到小的array集合当中

public class ceshi8 {
    public static void main(String[] args) {
        ArrayList<Integer> Bjihe = new ArrayList<>();
        ArrayList<Integer> sjihe = new ArrayList<>();
        Random suiji = new Random();

        for (int i = 0; i < 20; i++) {
            Bjihe.add(suiji.nextInt(20)+1);
        }
        for (int i = 0; i < 20; i++) {
            if ((Bjihe.get(i) % 2) == 0) {
                sjihe.add(Bjihe.get(i));
            }
        }
        for(int i=0[color=rgb(64, 120, 242)][font=Consolas][size=9pt]<[/size][/font][/color][color=rgb(152, 104, 1)][font=Consolas][size=9pt]sjihe[/size][/font][/color][color=rgb(56, 58, 66)][backcolor=rgb(250, 250, 250)][font=Consolas][size=9pt].[/size][/font][/backcolor][/color][color=rgb(64, 120, 242)][font=Consolas][size=9pt]size[/size][/font][/color][color=rgb(56, 58, 66)][backcolor=rgb(250, 250, 250)][font=Consolas][size=9pt]()[/size][/font][/backcolor][/color];i++){         //为什么在我知道数组大小的情况下,我使用长度20就会报红字错误,当我使用集合长度的时候就可以?
            System.out.print(sjihe.get(i)+",");
        }

    }
}




为啥自己给长度就报错,使用集合长度的时候就可以
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

nosilence 发表于 2019-8-13 07:44
你在第二段循环中是对Bjihe循环,将能被2整除的加入到sjihe中,因此sjihe中元素<=20个
在第三段循环中你应该遍历sjihe的大小,而不是直接20,20会越界

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
luanshils + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| luanshils 发表于 2019-8-13 07:46
nosilence 发表于 2019-8-13 07:44
你在第二段循环中是对Bjihe循环,将能被2整除的加入到sjihe中,因此sjihe中元素

对,我想问的就是为啥会越界。

是因为什么呢
clf3211147 发表于 2019-8-13 08:05
本帖最后由 clf3211147 于 2019-8-13 08:16 编辑

人家说的很明白了啊,小集合没有20个,超了就越界了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
luanshils + 1 + 1 谢谢@Thanks!

查看全部评分

你灬哪位 发表于 2019-8-13 08:27
第十五和第十九行   是个循环,以共循环了二十次
看起来没问题  但是你里面加了if   (Bjihe.get(i) % 2) == 0
这是取Bjihe是偶数的添加到sjihe里  ,如果是奇数就不存
所以你的sjihe长度肯定不是20 除非他全部是偶数
所以在你第20到22行 你循环20个  肯定会下标越界

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
luanshils + 1 + 1 谢谢@Thanks!

查看全部评分

你灬哪位 发表于 2019-8-13 08:31
[Asm] 纯文本查看 复制代码
	public static void main(String[] args) {
		ArrayList<Integer> Bjihe = new ArrayList<>();
		ArrayList<Integer> sjihe = new ArrayList<>();
		Random suiji = new Random();

		for (int i = 0; i < 20; i++) {
			Bjihe.add(suiji.nextInt(20)+1);
		}
		Bjihe.parallelStream().forEach(item ->{
			if (item % 2 == 0) {
				sjihe.add(item);
			}
		});
		sjihe.forEach(System.out::println);
	}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
luanshils + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| luanshils 发表于 2019-8-13 11:23
你灬哪位 发表于 2019-8-13 08:27
第十五和第十九行   是个循环,以共循环了二十次
看起来没问题  但是你里面加了if   (Bjihe.get(i) % 2) = ...

明白了,就是这个判断语句是判断偶数存到小集合,但是我不能掌控这个小集合的大小,如果我要掌控,就不能用随机函数,就得是固定的数,并且事先知道数字是多少,偶数的个数才能这么做。

否则必须依赖判断小集合的size大小来执行次数
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 02:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表