Ajuda com entrada de Parametro

2 respostas
hugown

Então galera, aqui fica minha dúvida, eu quero passar os parâmetros em certa ordem, por exemplo:

java Unit8TestDrive "Curitiba" 20 "Sao Paulo" 30 "Rio de Janeiro"

Este programa faz o seguinte, mostra a cidade e faz a conversão de Celsius para Fahrenheit e vice versa. Mas eu queria que na hora que ele fosse escrever na tela os nomes das cidades e as temperaturas ele colocasse ao contrário. Como eu passei "Curitiba" e "20" por primeiro, eu queria que ele ficasse por último. Entendem?

É isso que não estou conseguindo fazer. :P

Abaixo fica o fonte.

import java.util.Scanner;
import java.text.DecimalFormat;

public class Unit8TestDrive {
	public static void main (String args[]){
		Unit8[] cidades = new Unit8[args.length/2]; 
		Scanner teclado = new Scanner(System.in);	
		DecimalFormat decimal = new DecimalFormat("0");
		
						
		for (int i = 0; i < (args.length/2); i++){ 
			cidades[i] = new Unit8(); 
			cidades[i].setNome(args[i*2]);
			cidades[i].setTempC(Float.parseFloat(args[i*2+1]));
		}

		System.out.println("Escolha o metodo de conversao:\n");
		System.out.println("1 - Celsius para Fahrenheit;\n");
		System.out.println("2 - Fahrenheit para Celsius.\n");
		System.out.print("Opcao escolhida foi:");
		
		int tecla = teclado.nextInt();
		switch (tecla) {
		
		case 1:
			for (int x = 0;  x < (args.length/2); x++){ 
				System.out.println("\nCidade: " + cidades[x].getNome() + "\nTemperatura: " +decimal.format(cidades[x].getTempF())+"F\n");
			}
			break;
			
		case 2:
			
			for (int i = 0; i < (args.length/2); i++){ 
				cidades[i].setTempF(Float.parseFloat(args[i*2+1]));
			}			
			
			
			for (int x = 0; x < (args.length/2); x++){
				System.out.println("\nCidade: " + cidades[x].getNome() + "\nTemperatura: " +decimal.format(cidades[x].getTempC())+"C\n");
			}
			break;				
		
		default:
				System.out.println("Opcao invalida");
				System.exit(0);
				break;
		}
	}
}

Desde já agradeço.

[]'s

2 Respostas

P

tenta trocar esse for

for (int x = 0; x < (args.length/2); x++){  
             System.out.println("\nCidade: " + cidades[x].getNome() + "\nTemperatura: "   +decimal.format(cidades[x].getTempC())+"C\n");  
 }

por este

for (int x =  (args.length/2)-1; x >= 0; x--){  
             System.out.println("\nCidade: " + cidades[x].getNome() + "\nTemperatura: "   +decimal.format(cidades[x].getTempC())+"C\n");  
 }
M4N03L50N

Caro, inverta o for que cria o array de cidades.
Ao invés de ir de 0 até a qtde de cidades, vá da qtde de cidades até 0.

Exemplo:

for (int i = args.length/2; i > 0; i–)

Tenta aí e vê se rola.

Abraço,
manoelson

Criado 24 de setembro de 2008
Ultima resposta 24 de set. de 2008
Respostas 2
Participantes 3