0

一連の整数を配列に読み込み、配列内のすべての要素の交互和を計算するプログラムを作成してください。たとえば、入力データを使用してプログラムを実行すると、

1 4 9 16 9 7 4 9 11 次に計算します

1 - 4 + 9 - 16 + 9 - 7 + 4 - 9 + 11 = - 2

これまでのところ、以下のコードがあります。

import java.util.Arrays;

/**
This class computes the alternating sum
of a set of data values.
*/
public class DataSet
{
private double[] data;
private int dataSize;

/**
Constructs an empty data set.
*/
public DataSet()
{
final int DATA_LENGTH = 100;
data = new double[DATA_LENGTH];
dataSize = 0;
}

/**
Adds a data value to the data set.
@param x a data value
*/
public void add(double x)
{
if (dataSize == data.length)
data = Arrays.copyOf(data, 2 * data.length);
data[dataSize] = x;
dataSize++;
}

/**
Gets the alternating sum of the added data.
@return sum the sum of the alternating data or 0 if no data has been added
*/
public double alternatingSum()
{
. . .
}
}

次のクラスをテスター クラスとして使用する必要があります。

/**
This program calculates an alternating sum.
*/
public class AlternatingSumTester
{
public static void main(String[] args)
{
DataSet data = new DataSet();

data.add(1);
data.add(4);
data.add(9);
data.add(16);
data.add(9);
data.add(7);
data.add(4);
data.add(9);
data.add(11);

double sum = data.alternatingSum();
System.out.println("Alternating Sum: " + sum);
System.out.println("Expected: -2.0");
}
} 
4

5 に答える 5

2

私はあなたのためにalternativeSumメソッドを実装しました:

public double alternatingSum() {
    double alternatingSum = 0;
    if(data != null || dataSize > 0) {
        for(int i = 0; i < dataSize; i = i + 2) {
            alternatingSum += data[i];
        }
        for(int i = 1; i < dataSize; i = i + 2) {
            alternatingSum -= data[i];
        }
    }
    return alternatingSum;
}
于 2012-04-07T09:45:06.127 に答える
1

この単純なロジックを使用して、目標を達成します。最初に、配列内のすべての奇数を追加します。次に、同じものからすべての偶数を追加します。両方の値 n を減算すると、答えが得られます。お役に立てれば。

于 2012-04-07T07:21:28.437 に答える
1

for ループとブール値フラグを使用してこれを解決します。

set flag to false
set sum to zero
for alle elements in array
 if flag is set
  add to sum
 else 
  subtract from sum

When loop is done you have your sum.
于 2012-04-07T07:27:14.693 に答える
0

たとえばa[]={1, 3, 5, 6}、4 つの数字がある場合、いくつかのケースがあります。

operation:
    + + +
    + + -
    + - +
    + - -
    - + +
    - + -
    - - +
    - - -

あなたの場合、「操作」は+ - +のみになります

このシンボルで配列を使用し、結果を計算します。

int k=a[0];
    for(int i = 1; i<= 3; i++){
    if(operation[i-1]=="+".charAt(0))
{k=k+a[i];}
etc...
}

難しいことではありません:)頑張ってください。

于 2012-04-07T09:31:23.170 に答える