Implementei uma função para calcular o tempo de viagem. Para o consumo de combustível, é necessário a informação de quantos km cada veículo faz com um litro, e baseada na função calculaTempo, você pode implementar uma para calcular o consumo.
Sobre o restante do código, não tem sentido atribuir valores constantes aos atributos da classe no construtor, você deve atribuir os valores ao instanciar a classe e criar um novo objeto, usando os conceitos de orientação a objetos, pois assim você atribui valor aos atributos no momento de criação de cada objeto.
Sobre as variáveis velocidade e distancia, essa ultima eu mudei para float, pois faz mais sentido (e se a distancia não for um inteiro, como em 99% das vezes?).
Quanto ao tempo gasto,
float tempo_gasto_1 = (bus1.calculaTempo(103) / 60)/60;
fiz a conversão de segundos para horas no momento de atribuição da variável, mas o ideal seria implementar no próprio método um algoritmo para formatar para o formato hh:mm, e o ideal é fazer todas as contas nas unidades SI (metros, segundos) e depois fazer as conversões necessárias.
Um bom exercício seria deixar os atributos da classe como private (encapsulamento) , adicionar métodos set/get para mudar as características do objeto (como mudar o destino após o termino de uma viagem e atribuir uma nova distancia aproximada).
Com um método getDistancia() por exemplo, as linhas
bus1.calculaTempo(287);
ficariam de uma forma mais geral
bus1.calculaTempo(bus1.getDistancia());
e adequando o código adequadamente bastaria uma chamada
bus1.calculaTempo();
pois a distancia seria uma propriedade do objeto, portanto inerente a ele e sem necessidade de ser passado como parâmetro ou ser obtido por meio de um get e logo após ser passado novamente para um método do objeto, entende todo o caminho que o valor da distância percorre em vão indo e voltando? Mas deixei dessa maneira para estimula-lo a perceber o que está acontecendo.
public class Onibus {
int id;
String rota;
String origem;
String destino;
int horaPartida;
int minutoPartida;
float distancia; // distancia em km
int TempoViagem;
// velocidade em km/h convertida para metros por segundo
float velocidade = (80 * 1000) / (60 * 60); // 22.222222 m/s
public Onibus(int id, String rota, String origem, String destino, int horaPartida, int minutoPartida, float distancia) {
/*
this.id = 354;
this.rota = "POA‐LJO";
this.origem = "Lajeado";
this.destino = "Torres ";
this.horaPartida = 9;
this.minutoPartida = 0;
this.distancia = 359;
*/
this.id = id;
this.rota = rota;
this.origem = origem;
this.destino = destino;
this.horaPartida = horaPartida;
this.minutoPartida = minutoPartida;
this.distancia = distancia;
}
public Onibus(int id, String origem, String destino, float distancia) {
/*
this.id = 343;
this.origem = "Lajeado";
this.destino = "Progresso";
this.distancia = 63;
*/
this.id = id;
this.origem = origem;
this.destino = destino;
this.distancia = distancia;
}
float calculaTempo(float distancia) {
//converter km para m
distancia *= 1000;
return distancia/velocidade; // tempo em segundos!
}
public static void main(String[] args) {
Onibus bus1 = new Onibus(1, "Lajeado", "Canoas", 103);
float tempo_gasto_1 = (bus1.calculaTempo(103) / 60)/60; // convertendo segundos em horas!
Onibus bus2 = new Onibus(2, "EST‐TOR", "Estrela", "Torres", 10, 30, 287);
float tempo_gasto_2 = (bus2.calculaTempo(287) / 60)/60; // convertendo segundos em horas!
System.out.println("Distancia percorrida pelo onibus 1: " + 103 + " km.");
System.out.println("Tempo gasto: " + tempo_gasto_1 + " horas");
System.out.println("Distancia percorrida pelo onibus 1: " + 287 + " km.");
System.out.println("Tempo gasto: " + tempo_gasto_2 + " horas");
}
}