Programa Java Criando objetos com o comando while

Programa

// Calcula de combustível

import javax.swing.JOptionPane;

public class CombustivelTeste
{
	public static void main(String[] args)
	{
		int n1 = 1;
		
		String viagem1 = JOptionPane.showInputDialog(null, "Quantas viagens feitas?\nExit = -1", "Quilometragem de combustível", JOptionPane.QUESTION_MESSAGE);
		int viagem = Integer.parseInt(viagem1);
		
		if (viagem == -1)
		{
			System.exit(0);
		}
		else if (viagem == 0)
		{
			JOptionPane.showMessageDialog(null, "Você não fez nenhuma viagem.", "Quilometragem de combustível", JOptionPane.ERROR_MESSAGE);
		}
		else
		{
			while (n1 <= viagem)
			{
				String n = String.format("viagem%d", n1);
				// cria um objeto diferente a cada while
				// a quantidade de objetos criados tem relação com a resposta dada na linha 11
				Combustivel "n" = new Combustivel();
				
				String mensagem1 = String.format("Quantos quilômetros você fez na %s?", n);
				String km1 = JOptionPane.showInputDialog(null, mensagem1, "Quilometragem de combustível", JOptionPane.QUESTION_MESSAGE);
				int km = Integer.parseInt(km1);
		
				String mensagem2 = String.format("Quantos litros consumidos na %s?", n);
				String litro1 = JOptionPane.showInputDialog(null, mensagem2, "Quilometragem de combustível", JOptionPane.QUESTION_MESSAGE);
				int litro = Integer.parseInt(litro1);
				
				System.out.printf("%n%d%n%s%n", n1, n); // linha de comando desnecessária, é só para ver o que está sendo exibido, ou seja, se o programa está funcionando
				
				++n1;
			}
		}
	}
}

Estou tendo problemas na linha 29. Eu gostaria de criar objetos com diferentes nomes, sendo o nome dos objetos neste estilo: viagemN (N = um número inteiro). Estou fazendo isso, pois não gostaria de criar uma quantidade exata de objetos, mas deixar o usuário decidir a quantidade de objetos para criar.
Pesquisei sobre concatenação, será que daria ser?

Qual é a linha 29?

Combustivel “n” = new Combustivel();

Este n precisa ser uma variável, para que ele possa mudar, fazendo com que tenha vários objetos.
O n recebe o seguinte nome: viagemN (N = número inteiro). Assim se o usuário fez 2 viagens, n fica: viagem1; viagem2.
Se o usuário fez 3 viagens, n fica: viagem1; viagem2; viagem3.
Cada viagem é para ser um objeto. É que eu não quero criar uma quantidade exata de objetos. Quero que o usuário determine.

Nomes de variáveis não podem ter aspas.

@staroski como posso criar objetos sem precisar cria-los numa quantidade exata? Ou seja, como tornar esse n uma variável, pois assim posso criar vários objetos somente mudando os valores dessa variável, sendo que ela está diretamente ligada com a interação do usuário.

Se você vai precisar manter uma referência para estes objetos criados, utilize uma coleção para ir armazenando eles, senão vai reatribuindo os objetos à mesma variável a cada iteração.

1 curtida

@staroski Obrigado :smile::pray: