java报错java.lang.IndexOutOfBoundsException

图片说明
图片说明
图片说明
图片说明
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at RobotInterface.joke(RobotInterface.java:295)
at RobotGUI.main(RobotGUI.java:47)
在mac上跑的时候没有报错,在win上跑的时候就有这样的错误了,然后发现同样的语句在我另一个相似的函数里也有但是没有这样的报错,求谈里大神给分析分析,我baidu的情况来看好像是数组超界了?

这个错误的意思是说你的list里面没有元素;但是你i尝试取第一个元素,所以导致越界。
就好比这样的:
List<String> list = new ArrayList<>();
System.out.println(list.get(0));

其实这个list是没有元素的,这样就会报:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
因为index=0其实指向的是list的第一个元素

如果有帮助,希望结贴。

random的值是多少,调试下,尝试在上一行将它的值限定在 size - 1