Найдите среднее / минимальное / максимальное

   if (cleaningbay >=5)
   {
        long duration =5;
        try
        {    
            System.out.println("\n\t  All cleaners are busy..Please wait!..................................................................(-_-)" + bus.getName() );
            System.out.println("\n\t" + bus.getName() + "waited for " + duration );
            TimeUnit.SECONDS.sleep(duration);
            bus.notify();
            Cleaners(bus);
            bus.wait();
        }

        catch(InterruptedException iex)
        {
            iex.printStackTrace();
        } 
   }
   else if (cleaningbay < 5)
   {
        System.out.println("\n\t" + bus.getName() + "is heading to " + bus.getCleanersName() + Clock.get_time());
        cleaningbay++;
        long duration=0;
        try
        {    
            System.out.println("\n\t Cleaning in progress :" + bus.getName() + Clock.get_time() );
            duration = (long)(Math.random()* 3);

            TimeUnit.SECONDS.sleep(duration);
        }
        catch(InterruptedException iex)
        {
            iex.printStackTrace();
        }
   }

У меня есть эти коды в разных частях моей программы, где время записывается в переменной «duration». Я использовал переменную «duration» в разных методах одного и того же класса. я хотел знать, есть ли способ сложить эти значения "время" и найти среднее / мин / макс.

Пожалуйста, исправьте свой вопрос. Ваш текст стоит прямо между двумя частями исходного кода. Код «как есть» не будет компилироваться, потому что у вас болтается else if.

Turing85 10.05.2018 22:27

нет необходимости в else if (...); else имеет тот же эффект, что и предложение if - отрицание начального предложения if.

xor 10.05.2018 22:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
88
2

Ответы 2

Вы можете определить массив для хранения вашего времени перед каждым изменением переменной, а затем использовать его для вычисления требуемых значений.

List<Long> timeHistory = new ArrayList<>();
...
timeHistory.add(duration);
duration = (long)(Math.random()* 3);

timeHistory должен быть глобальной переменной вашего класса

Если ваш класс получает много трафика, вы не хотите хранить все время в списке, вместо этого я бы предложил вам создать служебный класс, который поможет вам отслеживать значения, необходимые для получения MIN, MAX и AVG, что-то вроде это:

public class TimeHistory {
    private Long minTime = Long.MAX_VALUE; 
    private Long maxTime = Long.MIN_VALUE;
    private Long timeSum = 0L;
    private Long timeCount = 0L;

    public void logTime(long time){
        if (time < minTime){
            minTime = time;
        }

        if (time > maxTime){
            maxTime = time;
        }

        timeSum += time;
        timeCount++;
    }

    public Long getMinTime() {
        return minTime;
    }

    public Long getMaxTime() {
        return maxTime;
    }

    public Long getTimeAvg() {
        return timeSum / timeCount;
    }
}

Здесь вы вызываете метод logTime (время); каждый раз, когда вам нужно, и он позаботится о том, чтобы эти значения обновлялись для вас, а затем вам просто нужно вызвать методы getMinTime (), getMaxTime () или getTimeAvg ().

Я надеюсь, что это помогает ;-)

Время сохраняется в переменной с именем duration, которая находится в классе Depot. Как импортировать время в этот класс?

Ben 13.05.2018 03:23

Ваш вопрос был: «Я хотел узнать, есть ли способ сложить эти значения« время »и найти среднее / минимальное / максимальное значение». Вы можете создать экземпляр этого класса TimeHistory, и всякий раз, когда вам нужно зарегистрировать новое время, вызовите instance.logTime, а затем вы можете запросить min, max и avg для этого экземпляра.

Roberto Rodriguez 13.05.2018 04:12

Другие вопросы по теме