java - 我收到错误我在线程“main”java中收到错误异常...下面的完整错误
问题描述
我收到标题中的错误,不知道它是什么意思/如何解决它
该程序应该有一个由 1-100 的 100 个随机数组成的数组,并将该数组中可被 4 整除的所有数字组成一个数组,并列出它们
public class JavaProgram{
public static void main (String [] args){
int [] hundredNumbers = new int [100];
for ( int i=0; i <hundredNumbers.length; i++ )
hundredNumbers[i] = (int) Math.random() * 100;
int [] multiplesOfFour = new int [100];
for ( int i=0; i<hundredNumbers.length; i++)
multiplesOfFour[i] = hundredNumbers[i];
getEvenMultiples(multiplesOfFour);
for ( int i=0; i < multiplesOfFour.length; i++ )
System.out.print (multiplesOfFour[i] + " ");
}
public static int[] getEvenMultiples(int[] x){
int result [] = {};
int count = 0;
for (int i = 0; i < x.length ; i++){
if ( x[i] % 4 == 0 ){
result = new int [++count];
result [count] = x[i];
}
}
return result;
}
}
我应该得到一个可以被 4 整除的所有数字的列表,但是得到
“线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:JavaProgram.getEvenMultiples(JavaProgram.java:27) 处 JavaProgram.main(JavaProgram.java:13) 处的索引 1 超出长度 1 的范围”
解决方案
问题是 getEvenMultiples 函数中的结果数组。
您使用 count (数组的长度)作为索引,因为长度总是大于最大的索引,所以会出现此错误。例如,您有一个长度为 2 的数组,您只能使用索引 0 和 1。因此您实际上会执行类似“result [count - 1] = x[i];”之类的操作
您遇到的另一个问题是,当您执行“result = new int [++count];”时,您总是会删除孔数组。您实际上想使用类似ArrayList
(https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html)的列表。在这里您可以找到有关如何使用的信息ArrayList
:https ://www.javatpoint.com/java-arraylist 。
啊,你永远不会在你的 main 函数中使用 getEvenMultiples 函数的结果。
推荐阅读
- javascript - 如何将变量从弹出窗口传递到仅使用 JS 打开它的窗口
- json - 如何从 media_share_url 获取 Instagram 帖子的 URL?
- html - 如何在这个 CSS Grid 布局中制作电影的封面照片,即使在高度上也是如此?
- python - Python - 保存地图 - 使用 ArcGIS - “NoneType”对象不可下标
- git - git push --recurse-submodules=check 推送到远程,即使有子模块在他们的远程之前
- nginx - nginx 配置:域工作但 IP 地址导致来自 Chrome 的安全警告
- nearprotocol - 为什么要删除包含智能合约的 NEAR 帐户的访问密钥?
- r - 如何在 R 中抑制/组合两个几何图形的图例
- image-processing - 调整图像中动画 GIF 的大小会产生伪影
- java - 中断一个在主线程中初始化的线程