首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态数组长度,替换值

静态数组长度,替换值
EN

Stack Overflow用户
提问于 2012-02-09 00:33:45
回答 2查看 602关注 0票数 0

我有一个长度为10的'double‘数组,当我第一次初始化这个数组时,里面的所有值都是'0.0’,直到我开始替换它们。一旦我用0以外的值替换了所有的值,我该怎么做呢?如果我决定在数组中“添加”另一个数字,它将从索引0的开始重新开始,并按顺序替换旧的数字。

从事银行账户交易程序的开发。因此,您有一个包含10个事务的数组,所有事务都从0.0开始。然后,当你开始取款或存钱时,它会将取款/存入的金额“记录”到每个插槽中。一旦您完成了第11个事务,就应该返回并替换第一个事务,第12个事务替换第二个事务,依此类推。

编辑:不允许使用数组列表。必须是普通的静态长度数组。

EN

回答 2

Stack Overflow用户

发布于 2012-02-09 00:46:50

这是一个简单的模数问题。Mathy解决方案将如下所示

代码语言:javascript
复制
 Wrap = currentArrayPos % arrayLength - 1 //need this since arrays start at 0 and length starts counting at 1.
 If Wrap == 1 --> currentArrayPos = 0
 Else --> currentArrayPos = currentArrayPos + 1

当您替换值时,您将迭代到下一个数组位置并替换值。当您替换了数组中的最后一个值时,模数告诉您循环回到前面并替换第一个值。

简单的Java解决方案是:

代码语言:javascript
复制
for(int i = 0; i < array.length; i++) { 
//logic for calculating new values and exit condition goes here. 
    array[i] = newValue
    if(i ==> array.length - 1)
        i = 0 //resets the loop to keep going

    if(exitCondition) 
        break; //if there's some criteria, get out.  }

如果这不是经常发生的事情,那么你可以跟踪你在数组中最后一次替换的位置,然后做模数的事情来确定你是否需要重置。

mre关于使用列表的建议也是值得研究的,但你需要跟踪位置。

票数 2
EN

Stack Overflow用户

发布于 2012-02-09 00:47:59

如果"i“是在每次写入后递增的数组索引,那么当您到达数组边缘时,一个简单的方法是使用模运算符:

代码语言:javascript
复制
int index = 0;
int arraySize = 10;
long[] data = new long[arraySize];

for (int i=0; i<100; i++) {
    data[ index++ % arraySize ] = i; // or some other value
}

这样,您的数组将以循环方式填充,始终在到达数组边界后再次从索引0开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9197506

复制
相关文章

相似问题

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