首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于生成逗号分隔值和总和的Java代码

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

Stack Overflow用户
提问于 2020-02-20 01:28:18
回答 5查看 4.4K关注 0票数 0

运行这段代码时,我得到了ArrayIndexOutOfBoundsException

代码语言:javascript
运行
复制
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);
    }
}
EN

回答 5

Stack Overflow用户

发布于 2020-02-20 01:35:39

代码语言:javascript
运行
复制
for (j=0; j<=num; j++)

这是错误的。它应该是:

代码语言:javascript
运行
复制
for (j = 0; j < num; j++)

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

现在,使用j<=num,您正在尝试访问索引5,该索引不存在,因此出现了异常。

代码语言:javascript
运行
复制
args[j]= Integer.toString(num);

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

此外,向args数组添加/修改元素也不是一种好的做法。您应该为此创建一个新的数组。

票数 0
EN

Stack Overflow用户

发布于 2020-06-27 06:03:58

通过避免使用Integer.toStringString.join传递参数,请找到简单得多的代码版本。简单的整型Arraylist和添加元素将会起到作用。

代码语言:javascript
运行
复制
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);
     }
  }

生成的输出如下:--

代码语言:javascript
运行
复制
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20] 110
票数 0
EN

Stack Overflow用户

发布于 2020-06-30 03:03:12

代码语言:javascript
运行
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60306062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档