Gostaria de ajuda ja entreguei o conversor mais quero melhora-lo tipo devolver o cambio do dia (isso eu consegui e também reprnar o cambio do dia anterior (esse eu não consegui) retorna is null. vou postar o código completo. aqui
public class appMoeda {
private static final String API_KEY = "ef3175fc6eb8f78d6fd445d9";
private static final String HISTORICAL_API_KEY = "HISTORY";
public static void main(String[] args) {
Scanner menu = new Scanner(System.in);
//menu de opções
while (true) {
System.out.print("| Opção 1 - Euro (EUR) pra Dolar (USD) |\n");
System.out.print("| Opção 2 - Dolar (USD) pra Euro (EUR) |\n");
System.out.print("| Opção 3 - Real (BRL) pra Dolar (USD) |\n");
System.out.print("| Opção 4 - Dolar (USD) pra Real (BRL) |\n");
System.out.print("| Opção 0 - Sair |\n");
System.out.print("Digite uma opção: ");
int opcao = menu.nextInt();
if (opcao == 0) {
System.out.print("\nConversor Finalizado!");
menu.close();
break;
}
System.out.print("Digite o valor a ser convertido: ");
double valor = menu.nextDouble();
// ler opççao
switch (opcao) {
case 1:
System.out.printf("\n%.2f EUR = %.2f USD\n", valor, converterMoeda("EUR", "USD", valor) + valor, converterMoedaDiaAnterior("EUR", "USD", valor));
break;
case 2:
System.out.printf("\n%.2f USD = %.2f EUR\n", valor, converterMoeda("USD", "EUR", valor) + valor, converterMoedaDiaAnterior("USD", "EUR", valor));;
break;
case 3:
System.out.printf("\n%.2f BRL = %.2f USD\n", valor, converterMoeda("BRL", "USD", valor) + valor, converterMoedaDiaAnterior("BRL", "USD", valor));
break;
case 4:
System.out.printf("\n%.2f USD = %.2f BRL\n", valor, converterMoeda("USD", "BRL", valor) + valor, converterMoedaDiaAnterior("USD", "BRL", valor));;
break;
default:
System.out.print("\nOpção Inválida! tente novamente com uma opção valida!\n");
break;
}
}
}
private static double converterMoeda(String from, String to, double valor) {
// Requisição de Serviço
try {
String url_str = "https://v6.exchangerate-api.com/v6/" + API_KEY + "/latest/" + from;
URL url = new URL(url_str);
HttpURLConnection request = (HttpURLConnection) url.openConnection();
request.connect();
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject jsonobj = root.getAsJsonObject();
double taxaDeCambio = jsonobj.getAsJsonObject("conversion_rates").get(to).getAsDouble();
//Retorna taxa de cambio
System.out.println(String.format("Taxa de câmbio atual de %s para %s é: %.2f", from, to, taxaDeCambio));
//Retorna valor convertido
return valor * taxaDeCambio;
} catch (Exception e) {
System.out.println("Erro ao obter taxa de câmbio: " + e.getMessage());
return 0;
}
}
private static double converterMoedaDiaAnterior (String from, String to,double valor){
try {
LocalDate yesterday = LocalDate.now().minusDays(1);
String date = yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String url_str = "https://api.currencylayer.com/historical?access_key=" + HISTORICAL_API_KEY + "&date=" + date + "¤cies=" + to + "&source=" + from;
URL url = new URL(url_str);
HttpURLConnection request = (HttpURLConnection) url.openConnection();
request.connect();
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject jsonobj = root.getAsJsonObject();
double taxaDeCambio = jsonobj.getAsJsonObject("quotes").get(from + to).getAsDouble();
System.out.println(String.format("Taxa de câmbio do dia anterior de %s para %s é: %.2f", from, to, taxaDeCambio));
return valor * taxaDeCambio;
} catch (Exception e) {
System.out.println("Erro ao obter taxa de câmbio: " + e.getMessage());
return 0;
}
}
}