如何编写一个程序,将一个整数序列读入一个数组,并计算数组中所有元素的交替总和?

编写一个程序,将一个整数序列读入一个数组,并计算数组中所有元素的交替和。 例如,如果使用输入数据执行程序

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 xa 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"); } } 

我为你实现了alternSum方法:

 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; } 

我会用这个简单的逻辑来实现目标。 首先添加数组中的所有奇数。 然后添加相同的所有偶数。 现在减去两个值,你会得到你的答案。 希望这可以帮助。

我会使用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. 

如果您有4个数字,例如a[]={1, 3, 5, 6} ,则有几种情况:

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

在你的情况下,“操作”将只是+ – +

使用带有此符号的数组并计算结果。

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

这不难:)祝你好运。