4

在这种情况下,程序应该将所有数组加在一起。但是,如果我在 sum 方法参数中输入 1,它将从 7 开始计数,但如果我输入 0,它会输出 0。

public class sList {

   public static void main(String[]args) {
       int[] array = {10,7,11,5,13,8}; // How do I make it read the value 10 as 1 in the array?
       sum(array.length,array);
   }

   public static int sum(int n, int[] S) {
       int i;
       int result;

       result = 0;
       for(i=1;i<=n;i++)
           result = result + S[i];

       System.out.println(result);
       return result;
   }    
}
4

5 回答 5

8

我不会传递长度,因为:

  • 它是多余的 -array.length如果你想知道它会告诉你长度
  • 无论如何你都不需要知道长度,因为有更好的方法来迭代数组

相反,只需使用foreach 循环遍历传入的整个数组:

public static int sum(int[] array) {
    int result = 0;
    for (int i : array)
        result += i;
    return result;
}

这样做会减少很多代码,从而更容易阅读和理解。

于 2012-12-25T11:26:15.077 回答
2

好吧,数组索引以 开头zero,我想到的唯一方法是在获取值的同时减少 i 的值。

int[] s = {10,7,11,5,13,8}; 

for(i=1;i<=n;i++){
    result = result + S[i-1];
}
于 2012-12-25T11:22:47.210 回答
0

想想看,它对 0 的影响(否则为 1):

情况 0:(n = 长度 = 6)0、1、2、3、4、5、6

案例 1:(n = 6)1、2、3、4、5、6

数组中的字面填充位置:0、1、2、3、4、5

在任何一种情况下,元素 6 都不在数组中,因此存在错误。万一你“忘记”计算索引为 0 的第一个元素。

这就是为什么你必须写: for (i = 0; i <= n-1; i++)

于 2012-12-25T11:28:23.293 回答
0

您应该更改 for 循环,而不是更改数组:

for(i=0;i<n;i++)

但如果你不想这样做,你总是可以将第一个元素设为 0:

int[] array = {0, 10,7,11,5,13,8};
于 2012-12-25T11:22:59.580 回答
0

只需继续将 for 循环设置为加 1 值,以便 0 数组值准确反映相对索引!

for (int i = 0; i < helloArray.length; i++) {

            if (i == max) {
                System.out.println(helloArray[i]);
                System.out.println("=");
                System.out.println(i+1);
            }
于 2017-09-14T20:52:00.990 回答