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

配列を変更する代わりに、for ループを変更する必要があります。

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

しかし、それをしたくない場合は、常に最初の要素を 0 にすることができます:

int[] array = {0, 10,7,11,5,13,8};
于 2012-12-25T11:22:59.580 に答える
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 は配列に含まれていないため、エラーが発生します。ケース1では、インデックス0の最初の要素を数えることを「忘れて」います。

それがあなたが書かなければならない理由です: for (i = 0; i <= n-1; i++)

于 2012-12-25T11:28:23.293 に答える