Java代码生成逗号分隔的值和总和

问题描述 投票:0回答:2

运行此代码时,我得到了ArrayIndexOutOfBoundsException

public class Evensum {

    public static void main(String[] args) {
        int num = Integer.parseInt(args[0]);
        int even[] = new int[num];
        int sum = 0,j = 0;
        String evennums = "";
        //Insert your code here
         for(j=0; j<=num; j++) {
            if(num%2==0) {
                even[j]=num;
                sum=sum+num;
                args[j]= Integer.toString(num);
            }
            evennums=String.join(",", args);
        }    
        System.out.println(evennums);
        System.out.println(sum);
    }
}
java indexoutofboundsexception
2个回答
0
投票
for (j=0; j<=num; j++)

这是错误的。应该是:

for (j = 0; j < num; j++)

为什么?假设num为5。在此行之前,您将even初始化为5。even的索引为0、1、2、3、4。

现在,使用j<=num,您正在尝试访问不存在的索引5,因此是例外。


args[j]= Integer.toString(num);

此行将引发另一个异常。我假设您仅从命令行传递了一个参数,即args[0]。这意味着args数组的大小为1,并且您不能向其添加更多元素。

而且,向args数组添加/修改元素也不是一个好习惯。您应该为此创建一个新数组。


0
投票

替换

© www.soinside.com 2019 - 2024. All rights reserved.