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

pkbketx9  于 2023-09-29  发布在  Java
关注(0)|答案(5)|浏览(116)

在运行这段代码时,我得到了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);
    }
}
gpfsuwkq

gpfsuwkq1#

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数组添加/修改元素也不是一个好的做法。您应该为此创建一个新数组。

vsdwdz23

vsdwdz232#

请通过避免Integer.toStringString.join来找到更简单的代码版本来传递参数。简单的整数Arraylist和添加的元素将做的伎俩。

package com.umapathy.java.learning.programs;
import java.util.ArrayList;
import java.util.List;
public class EvenSum 
{
    public static void main(String[] args)
{   
    int num = 20; //Initialize the user-defined value for the loop execution
    int sum = 0 ; //Initialize the Sum Value as 0
    List<Integer> evenlist = new ArrayList<Integer>(); //Define an integer 
    Array list
    for (int i=2; i<=num; i++) //Begin the loop from the value of 2 
    {
      if(i%2==0) //Logic to find whether a given number is Even Number or not
      {
      sum = sum + i;  // If the logic returns true, Calculate the Sum Value 
      evenlist.add(i); // Add the Integer to the previous defined Integer 
                       // Arraylist by calling add method
       }        
    }
    System.out.println(evenlist); // Print the Output outside the loops
    System.out.println(sum);
     }
  }

输出生成如下:

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20] 110
jjhzyzn0

jjhzyzn03#

package javaApp;

public class EvenSum {

    public static void main(String[] args) {
        int num = 20;
        int even[] = new int[num];
        int sum = 0,j = 0;
        String evennums = "";
        for(j=1; j<=num; j++) {
            if(j%2==0) {
                sum=sum+j;
                evennums=evennums+","+j;
            }
        }
        evennums=evennums.replaceFirst(",","");
        System.out.println(evennums);
        System.out.println(sum);
    }
}
bgtovc5b

bgtovc5b4#

为什么初始化偶数数组的大小,如果它的实际长度是未知的。在这种情况下,最好使用ArrayList,它具有动态增长的特性。

就这样

public static void main(String[] args) {
            int num =  Integer.parseInt(args[0]);
            List<Integer> evens = new ArrayList<Integer>();
            int sum = 0;                
            for (int j = 0; j <= num; j++) {
                if (j % 2 == 0) {
                    sum += j;
                    evens.add(j);
                }
            }       
            System.out.println("Even Numbers List : "+evens);
            System.out.println("Total Sum : "+sum);
      

     // If you want an array of int instead of ArrayList you can convert ArrayList into int[] with following two lines

           int evenArray[] = even.stream().mapToInt(x->x).toArray();                
           System.out.println("Even Numbers Array : "+evenArray);

        }
mrzz3bfm

mrzz3bfm5#

public static void main(String[] args) {
        // TODO Auto-generated method stub
        //System.out.println("Args: "+args[0]);
        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(j%2==0) {
                //even[j]=num;
                sum=sum+j;
                if(j!=0) evennums=evennums+","+j;

            }

        }    
        evennums=evennums.substring(1);
        System.out.println(evennums);
        System.out.println(sum);
    }

在eclipse中运行时,请遵循以下步骤:
右击class--> Run AS --> Run Configuration转到Arguments选项卡并将值传递为10单击Run Output:二四六八十三十

相关问题