【问题标题】:print the summation of an array打印数组的总和
【发布时间】:2022-01-14 18:32:22
【问题描述】:

我需要创建一个 1 到 100 的数组并打印元素的总和。

其实我已经把for循环和Array一起用过了!但它不会起作用。

  int i, sum = 0;
    for(i = 1; i < 100; i++) {
      int [] arr = new int [] {i};
            sum = sum + arr[i];
    }
            System.out.println("Sum of all the elements of an array: " + sum);
}

【问题讨论】:

  • 您在每次循环迭代中创建一个新数组,其中包含一个元素。那不是你想要的。而arr[i]的访问会马上抛出ArrayOutOfBoundsException。
  • 你知道如何创建一个包含 100 个元素的(空)数组吗?
  • @xFive 您选择作为答案的解决方案是不准确的。尝试运行这两个数组{1,2,3,4,5,6,7,8,9,10}{10,2,3,4,5,6,7,8,9,10}。两者加起来都是 55。
  • @xFive 我还注意到arr[i] = i+1; 这行用计数器的值覆盖了数组的值。完全不正确。你不应该改变数组。您应该读取这些值并将它们相加。
  • @xFive 这就是为什么你需要用不同的输入来测试代码。

标签: java arrays


【解决方案1】:

“单线”解决方案。

int[] arr = {...}; // Your array here
int sum = 0;
for (int i = 0; i < arr.length; i++) {
    sum = sum + arr[i]; // can also be written as sum += arr[i];
}

System.out.println("Sum of all the elements of an array: " + sum);

如果数组为空,则总和为零。否则,它是累计和。最好的办法是在for 结构内部而不是外部声明和递增循环计数器变量。这就是它的设计方式。如果您需要在循环外访问此变量,请改用while 循环。

更新:如果您对 while 循环等效项感到好奇:

int[] arr = {...}; // Your array here
int sum = 0;
int i = 0; 
while (i < arr.length) {
    sum = sum + arr[i]; // can also be written as sum += arr[i];
    i++; // always increment the variable at the end of the loop
}

【讨论】:

    【解决方案2】:

    我认为您正在寻找这样的东西:

    int i, sum = 0;
            int[] arr = new int[100];
            for(i = 0; i < arr.length; i++) {
                arr[i] = i+1;
                sum += arr[i];
            }
             System.out.println("Sum of all the elements of an array: " + sum);
    

    【讨论】:

    • 耶!呃,我只是错过了 arr[i] = i +1 嗯!非常感谢你!
    • @xFive 不,您还以非常不同的方式声明了数组
    • 没问题,如果是您的解决方案,请不要忘记将答案标记为已接受,谢谢
    • @Devck-DC 这不是一个准确的解决方案。它会跳过索引 0 的值。将该索引的值更改为 1 以外的任何值,这会给您带来不好的结果。
    • @Devck-DC 如果您通过代码运行以下{10,10,10,10,10,10,10,10,10,10},它会输出 100(正确)还是 55(错误)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多