Я попробовал ваш код со следующими значениями:
String[] p = new String[4];
String[] p2 = new String[4];
double[] it = {5432d, 4234d, 6345d, 64320d, 8534d};
double[] ot = {5436d, 4234d, 6342d, 64326d, 8534d};
int[] is = {45, 654, 79, 16354, 4563};
int[] os = {65, 641, 98, 23346, 9846};
Buffer buffer = new Buffer();
buffer.analysis_buffer(p, p2, it, ot, is, os);
buffer.check_buffer();
И я получил такой результат:
Initial buffer size was 0
Final buffer size: 16354.
Buffer was empty 3 times.
Failed attempt to output data from the buffer: 3 times.
Total time for which the buffer was empty: 62200.0 seconds.
Переменные failed_attempt
и time_empty
изменяются только в этомместо:
if(buffer_size == 0) {
failed_attempt++;
time_empty = time_empty + (output_time[j+1]-output_time[j]);
}
Я думаю, что условие не было выполнено (с вашими значениями теста), и, возможно, ни одно из следующих:
if(output_size[j] > buffer_size) {
buffer_size = 0;
count_empty++;
}
и
else if (input_time[i] > output_time[j]) {
Кстати, попробуйте исправить это:
java.lang.ArrayIndexOutOfBoundsException: 5
at Buffer.analysis_buffer(Buffer.java:47)
С этими значениями:
String[] p = new String[5];
String[] p2 = new String[5];
double[] it = {5432d, 4234d, 6345d, 64320d, 8534d};
double[] ot = {5436d, 4234d, 6342d, 64326d, 8534d};
int[] is = {45, 654, 79, 16354, 4563};
int[] os = {65, 641, 98, 23346, 9846};
Buffer buffer = new Buffer();
buffer.analysis_buffer(p, p2, it, ot, is, os);
buffer.check_buffer();