Diminuir linhas de programa

Olah,fiz um programinha que calcula a quantia de litros e quilometros de um determinado tanque de um automovel mas ele tah primitivo, como posso estabelcer as estrutras de repetição no programa
e pra reduzir as linhas como faço utilizando funçoes
vlews

import javax.swing.JOptionPane;
class Carro{

     public static void main(String []args){
       String input1,input2,input3,input4,input5,input6;
       int kmt1,kmt2,kmt3,kmt4,kmt5,kmt6;
       int i;
        
         input1 =   JOptionPane.showInputDialog(null,
           "Digite os quilometros do tanque A ","Km",
           JOptionPane.PLAIN_MESSAGE);
           
        kmt1 = Integer.parseInt(input1);
        if( kmt1 < 0){
            JOptionPane.showMessageDialog(null,
            "Numero não deve ser negativo!","Alerta",
            JOptionPane.WARNING_MESSAGE);
            System.exit(0);}
        
        input2 =   JOptionPane.showInputDialog(null,
           "Digite os quilometros do tanque B ","Km",
           JOptionPane.PLAIN_MESSAGE);
                      
        kmt2 = Integer.parseInt(input2);
        if( kmt2 <0 ){
            JOptionPane.showMessageDialog(null,
            "Numero não deve ser negativo!","Alerta",
            JOptionPane.WARNING_MESSAGE);
            System.exit(0);}
        
          input3 =   JOptionPane.showInputDialog(null,
           "Digite os quilometros do tanque C","Km",
           JOptionPane.PLAIN_MESSAGE);
           
        kmt3 = Integer.parseInt(input3);
        if (kmt3 < 0 ){
            JOptionPane.showMessageDialog(null,
            "Numero não deve ser negativo!","Alerta",JOptionPane.WARNING_MESSAGE);
            System.exit(0); }
        
           JOptionPane.showMessageDialog(null,"Confirma Valores: "+kmt1+","+kmt2+","+kmt3);
           
           input4 =   JOptionPane.showInputDialog(null,
           "Digite os litros de gasolina do tanque A ","Litros",
           JOptionPane.PLAIN_MESSAGE);
           
        kmt4 = Integer.parseInt(input4);
        if( kmt4 < 0){
            JOptionPane.showMessageDialog(null,
            "Numero não deve ser negativo!","Alerta",
            JOptionPane.WARNING_MESSAGE);
            System.exit(0);}
        
        input5 =   JOptionPane.showInputDialog(null,
           "Digite os litros de gasolina do tanque B ","Litros",
           JOptionPane.PLAIN_MESSAGE);
                      
        kmt5 = Integer.parseInt(input5);
        if( kmt5 <0 ){
            JOptionPane.showMessageDialog(null,
            "Numero não deve ser negativo!","Alerta",
            JOptionPane.WARNING_MESSAGE);
            System.exit(0);}
        
          input6 =   JOptionPane.showInputDialog(null,
           "Digite os litros de gasolina do tanque C","Litros",
           JOptionPane.PLAIN_MESSAGE);
           
        kmt6 = Integer.parseInt(input6);
        if (kmt6 < 0 ){
            JOptionPane.showMessageDialog(null,
            "Numero não deve ser negativo!","Alerta",JOptionPane.WARNING_MESSAGE);
            System.exit(0); }
          
          
           JOptionPane.showMessageDialog(null,
           "Tanque A consumiu " +kmt1+ " km com "+ kmt4+ " litros de gasosa lol!","Info",
           JOptionPane.PLAIN_MESSAGE);
           
           
           JOptionPane.showMessageDialog(null,
           "Tanque B consumiu " +kmt2+ " km com " +kmt5+ " litros de gasosa lol!","Info",
           JOptionPane.PLAIN_MESSAGE);
            
           
           JOptionPane.showMessageDialog(null,
           "Tanque C consumiu " +kmt3+ " km com " +kmt6+ " litros de gasosa lol!","Info",
           JOptionPane.PLAIN_MESSAGE);
           
           
            double mediatl = (kmt1+kmt2+kmt3) / (kmt4+kmt5+kmt6);
           JOptionPane.showMessageDialog(null,
           "Media do tanque/litro"+mediatl,"Info",
           JOptionPane.INFORMATION_MESSAGE);
           System.exit(0);
    }
}

Espremer mto o código torna-o ilegível.

Bem… poderia nos dar mais informações. Porque o código assim está um pouco ilegível.

Mas pelo que percebi, você repete 3 vezes um mesmo processo, paenas trocando as variáveis e as mensagens… Poderia passar isso para um método separado…

Assim???

O princípio é simples: NÃO REPETIR CÓDIGO!!

Para isso existem os laços.

 String[] tanques = new String[]{ "A", "B", "C" };
	    
	    int[] quilometros = new int[]{0,0,0};
	    int[] litros = new int[]{0,0,0};
	    
	    for (int i = 0; i < quilometros.length; i++){
		  quilometros[i] = Integer.parseInt( JOptionPane.showInputDialog(null, "Digite os quilômetros do tanque " + tanques[i] ,"Km", JOptionPane.PLAIN_MESSAGE) );
		  if (quilometros[i] < 0 ){
			JOptionPane.showMessageDialog(null,
				  "Numero não deve ser negativo!","Alerta",
				  JOptionPane.WARNING_MESSAGE);
			System.exit(0);
		  }
	    }
	    
	    JOptionPane.showMessageDialog(null,"Confirma Valores: "+quilometros[0]+","+quilometros[1]+","+quilometros[2]);
	    
	    for (int i = 0; i < litros.length; i++){
		  litros[i] = Integer.parseInt( JOptionPane.showInputDialog(null, "Digite os litros de gasolina do tanque " + tanques[i] ,"Litros", JOptionPane.PLAIN_MESSAGE) );
		  if (litros[i] < 0 ){
			JOptionPane.showMessageDialog(null,
				  "Numero não deve ser negativo!","Alerta",
				  JOptionPane.WARNING_MESSAGE);
			System.exit(0);
		  }
	    }
	    
	    for (int i = 0; i < tanques.length; i++){
		  JOptionPane.showMessageDialog(null,
		      "Tanque " + tanques[i] + " consumiu " +quilometros[i]+ " km com "+ litros[i]+ " litros de gasosa lol!","Info",
		      JOptionPane.PLAIN_MESSAGE);
	    }
	    
	    double mediatl = (quilometros[0]+quilometros[1]+quilometros[2]) / (litros[0]+litros[1]+litros[2]);
	    JOptionPane.showMessageDialog(null,
		      "Media do tanque/litro"+mediatl,"Info",
		      JOptionPane.INFORMATION_MESSAGE);
	    System.exit(0);

da uma olhada nesse material, ou entao pesquisa na net sobre POO, vai te ajudar bastante!

[]'s

Você ainda pode reduzir mais e deixar o código mais claro criando funções:

Por exemplo, crie a função:

void mostraAlerta(String message) { JOptionPane.showMessageDialog(null, message,"Alerta", JOptionPane.WARNING_MESSAGE); }

E então, em todo lugar que você vai usar a JOptionPane só para mostrar um alerta basta fazer:

mostraAlerta("Numero não deve ser negativo!");

Boa tarde, Albernadino.

Apenas complementando o que os colegas já apresentaram, consegui reduzir bem o código:

package edu.fai.consumodegasolina.codigoreduzido;

import javax.swing.JOptionPane;  

class ConsumoDeGasolina{ 
	private static String[] strTanques     = new String[]{"A", "B", "C"};
	private static String[] strLitros      = new String[3];
	private static String[] strQuilometros = new String[3];
	
	public static void main(String []args){ 
		int iTotalDeQuilometros = 0, iTotalDeLitros = 0;
		
		for(int i=0; i<strTanques.length; i++){
			strQuilometros[i] = JOptionPane.showInputDialog(null,"Digite os quilômetros do tanque " +   
                                                           strTanques[i],"Km",   
			           JOptionPane.PLAIN_MESSAGE);  
			strLitros[i] = JOptionPane.showInputDialog(null, "Digite os litros de gasolina do tanque " + 
                                                            strTanques[i], "Litros", JOptionPane.PLAIN_MESSAGE); 
		}
		
		for(int i=0; i<strQuilometros.length; i++){
			iTotalDeQuilometros += Integer.parseInt(strQuilometros[i]);
			iTotalDeLitros      += Integer.parseInt(strLitros[i]);
			
			  JOptionPane.showMessageDialog(null, "Tanque " + strTanques[i] + "consumiu " + 
                                                                                  strQuilometros[i] + 
					  " km com "+ strLitros[i] + " litros de gasosa lol!", "Info", 
                                                                                   JOptionPane.PLAIN_MESSAGE); 
		}
		
		JOptionPane.showMessageDialog(null, "Media do tanque/litro: " +  
                                                                 ((double)iTotalDeQuilometros/(double)iTotalDeLitros),
				"Info",   JOptionPane.INFORMATION_MESSAGE); 	
    }   
}

Mas também pode ser melhorado com criação de métodos.

Espero ter ajudado.

Abraço.

A primeira coisa a fazer é: Orientação a Objetos.
Se está trabalhando com tanques, crie uma classe Tanque.
Que atributos ela tem ?

Tem um nome (A, B , C … ) tem uma distancia associada (km) e uma capacidade(litro) e uma eficiencia ( litro/km)

public class Tanque {

   public String nome;
   public double distancia;
    public double capacidade;
 
   public Tanque(String nome){
     this.nome  = nome;
   }

   public double eficiencia (){
              return distancia/capacidade ;
   }
}

Depois vc cria uma programa de teste. Como vc quer testar vários tanques, crie uma coleção de tanques.


// dentro do main

List<Tanque> tanques = new ArrayList<Tanque>(); 

tanques.add(new Tanque("A"));
tanques.add(new Tanque("B"));
tanques.add(new Tanque("C"))

for(Tanque tanque : tanques){  
tanque.distancia = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite os quilômetros do tanque " + tanque.nome,"Km",  JOptionPane.PLAIN_MESSAGE));    

tanque.capacidade= Double.parseDouble( JOptionPane.showInputDialog(null, "Digite os litros de gasolina do tanque " + tanque.nome, "Litros", JOptionPane.PLAIN_MESSAGE));   

}  

// mostrar resultado
for(Tanque tanque : tanques){  

 JOptionPane.showMessageDialog(null, "Media do tanque/litro: " + tanque.eficiencia()  ,  "Info",   JOptionPane.INFORMATION_MESSAGE);       
}     

O ponto é: use objetos. Esse é a forma fundamental de diminuir o codigo

Acrescentando o que o Taborda disse, pode-se utilizar OO (imprescindível) com a arquitetura MVC (Model-View-Controller). Por exemplo, a classe Tanque seria o modelo e a classe ConsumoDeGasolina poderia ser o controller.

A primeira representa muito bem a principal entidade do problema, especificando claramente os atributos distancia e capacidade. Cabe a segunda ter a inteligência de calcular o consumo em km por litro.

Vc pode adotar uma interface fluente:

[code]class Tanque{
private String nome;
private double distancia, capacidade;
public Tanque chamado(String nome) { this.nome = nome ; return this;}
public Tanque andou(double distancia) { this.distancia = distancia ; return this;}
public Tanque com(double capacidade) { this.capacidade = capacidade ; return this;}
/* aqui vc pode colocar o calculo de eficiencia; */
}

Tanque X = new Tanque()
.chamado(“A”)
.andou(30.0 /* km /)
.com(50.0 /
lts */);[/code]