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 (...); else имеет тот же эффект, что и предложение if - отрицание начального предложения if.




Вы можете определить массив для хранения вашего времени перед каждым изменением переменной, а затем использовать его для вычисления требуемых значений.
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. Как импортировать время в этот класс?
Ваш вопрос был: «Я хотел узнать, есть ли способ сложить эти значения« время »и найти среднее / минимальное / максимальное значение». Вы можете создать экземпляр этого класса TimeHistory, и всякий раз, когда вам нужно зарегистрировать новое время, вызовите instance.logTime, а затем вы можете запросить min, max и avg для этого экземпляра.
Пожалуйста, исправьте свой вопрос. Ваш текст стоит прямо между двумя частями исходного кода. Код «как есть» не будет компилироваться, потому что у вас болтается
else if.