Siema
Mam taki oto z pozoru prosty fragment kodu, jednak trochę nerwów przy nim straciłem. Mam 4 tablice - 2 z czasami oraz 2 z wielkościami które im odpowiadają które dodaje/odejmuje do zmiennej buffer_size.
public class Main {
public static void main(String[] args) {
double[] input_time = {1.1, 1.3, 1,5, 1,7};
double[] output_time = {1.2, 1.4, 1.6, 1,8};
int[] input_size = {100, 10, 10, 20};
int[] output_size = {10, 50, 10, 30}; //na koniec musi byc 40
Buffer buffer = new Buffer();
buffer.analysis(input_time, output_time, input_size, output_size);
buffer.check();
}
}
public class Buffer {
int buffer_size=0;
public void analysis(double[] input_time, double[] output_time, int[] input_size, int[] output_size) {
for (int i = 0; i < input_size.length; i++) {
for (int j = 0; j < output_size.length; j++) {
if (input_time[i] < output_time[j]) {
buffer_size = buffer_size + input_size[i];
break;
}
if (input_time[i] > output_time[j]) {
buffer_size = buffer_size - output_size[j];
break;
}
}
}
System.out.println("buffer size: "+buffer_size);
}
Analizując przebieg pętli znalazłem(mam nadzieję) miejsce z błędem:
- dla i=0 -> j=0 dodaje do bufora
- dla i=1 -> j=0 odejmuje z bufora
- dla i=2 ->j=0 odejmuje z bufora - i tutaj właśnie moja pętla zaczyna wariować, dochodzi do momentu w którym porównuje input_time=1,5s do output_time=1,2s, a wartość z output[0] została już użyta.
Jak mogę wyeliminować błąd obliczeń na wartościach które były już wykorzystywane? Jak się nie mylę to zwykłe kasowanie każdego elementu tablicy po dodaniu/odjęciu spowoduję, że pętla też nie przejdzie poprawnie. Z jakiej kolekcji muszę skorzystać zamiast tablic?