首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写将整数序列读入数组并计算数组中所有元素的交替和的程序?

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

Stack Overflow用户
提问于 2012-04-07 15:13:00
回答 5查看 12.9K关注 0票数 0

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

1 4 9 16 9 7 4 9 11然后计算

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

到目前为止,我有以下代码:

代码语言:javascript
复制
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()
{
. . .
}
}

我必须使用下面的类作为测试类:

代码语言:javascript
复制
/**
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");
}
} 
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-07 17:45:06

我为您实现了alternatingSum方法:

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2012-04-07 15:21:28

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

票数 1
EN

Stack Overflow用户

发布于 2012-04-07 15:27:15

我会使用一个for循环和一个布尔标志来解决这个问题:

代码语言:javascript
复制
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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10052568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档