2012-02-08 2 views
0

길이가 10 인 'double'배열이 있습니다. 배열을 처음 시작할 때 배열을 바꿀 때까지 안의 모든 값은 '0.0'입니다. 일단 모든 값을 0 이외의 값으로 바꾸면 배열에 다른 숫자를 '추가'하기로 결정하면 어떻게 할 것인가? 인덱스 0에서 처음부터 다시 시작하여 다시 처리 할 것입니다. 오래된 숫자는 순서대로.정적 배열 길이, 값 바꾸기

은행 계좌 거래 프로그램에 대한 작업. 그래서, 당신은 0.0에서부터 시작하는 10 개의 트랜잭션의 배열을가집니다. 그런 다음 돈을 인출하거나 예치하기 시작할 때 각 슬롯에 금액을 인출하거나 입금합니다. 11 번째 트랜잭션을 수행하면 되돌아 가서 첫 번째 트랜잭션을 교체하고 12 번째 트랜잭션을 2 번째 트랜잭션으로 대체하는 것으로 가정합니다.

편집 : 배열 목록을 사용할 수 없습니다. 일반 정적 길이 배열이어야합니다.

+1

당신이하려는 일의 예를 제공해 줄 수 있습니까? 나는 현재의 설명이 다소 불명확하다고 본다. – NPE

+0

은행 계좌 거래 프로그램에 대한 작업. 그래서, 당신은 0.0에서부터 시작하는 10 개의 트랜잭션의 배열을가집니다. 그런 다음 돈을 인출하거나 예치하기 시작할 때 각 슬롯에 금액을 인출하거나 입금합니다. 11 번째 트랜잭션을 수행하면 되돌아 가서 첫 번째 트랜잭션을 대체하고 12 번째 트랜잭션은 2 번째 트랜잭션을 대체한다고 가정합니다. – user1015523

답변

2

이것은 단순 모듈러스 문제입니다. Mathy 솔루션은 다음과 같습니다.

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 

값을 바꿀 때 다음 배열 위치로 반복하고 값을 바꿉니다. 배열의 마지막 값을 바꾼 경우 계수는 앞에 루프백하고 첫 번째 값을 바꿉니다. 그것은 지속적으로 반복되는 일이 아니라면,

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

당신은 당신이 필요로하는 경우 결정하기 위해 당신이 배열의 대체 마지막 장소를 추적하고, 계수의 일을 수행 할 수 있습니다

쉬운 자바 솔루션이 될 것입니다 재설정할지 여부.

목록을 사용하는 것이 좋습니다뿐만 아니라 조사 할 가치가 있지만 위치를 추적해야합니다.

0

"내가"각 작성 후 증가 배열 인덱스 인 경우 당신은 그것의 가장자리에 올 때, 쉬운 방법은 배열 주위를 감싸는는 나머지 연산자 사용하는 것입니다

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에서 시작하여 원형으로 채워집니다.