Este problema solicita um input de valor e devolve um output com a conversões de câmbio dos Estados Unidos, Índia, China e França.
Locale
Existem locales
pré definidos, como no caso de US, CHINA e FRANCE. Alguns outros países, como Índia e Brasil, exigem que seja construído um novo Locale
. Para isso, usamos a seguinte sintaxe:
Currency.getInstance(new Locale("língua", "País"))
Usando as iniciais corretas, temos os exemplos a seguir:
Hindi/India:
Currency.getInstance(new Locale("hi", "IN"))
Observação: Na saída específica desse exercício tive que trocar a lingua hi (hindi) para en (english) porque os números em hindi são diferentes dos números em inglês. O HackerRank não identificou como uma saída válida nesse caso.
Português/Brasil:
Currency.getInstance(new Locale("pt", "BR"))
=========
NumberFormat
Essa classe abstrata serve para adaptar números para qualquer localidade. Pode trocar .
por ,
ou adicionar alterações e símbolos de cada local.
Os métodos mais importantes dessa classe são:
Use
getInstance
orgetNumberInstance
to get the normal number format. UsegetIntegerInstance
to get an integer number format. UsegetCurrencyInstance
to get the currency number format. And usegetPercentInstance
to get a format for displaying percentages. With this format, a fraction like 0.53 is displayed as 53%. (Oracle)
Para fazermos a adaptação de câmbio, usamos o método .getCurrencyInstance()
e, dentro dos parênteses, passamos o Locale
.
=========
Sendo assim, o código final fica:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double payment = scanner.nextDouble();
scanner.close();
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat india = NumberFormat.getCurrencyInstance(new Locale("en", "IN"));
NumberFormat china = NumberFormat.getCurrencyInstance(Locale.CHINA);
NumberFormat france = NumberFormat.getCurrencyInstance(Locale.FRANCE);
System.out.println("US: " + us.format(payment));
System.out.println("India: " + india.format(payment));
System.out.println("China: " + china.format(payment));
System.out.println("France: " + france.format(payment));
=========
Referências:
- NumberFormat : Oracle
- NumberFormat : DevMedia
============
Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:
- HackerRank #6 | Scanner e End-of-file
- HackerRank #7 | Int to String / String to Int
- HackerRank #8 | Date and Time
- HackerRank #9 | Static Initializer Block
- HackerRank #10 | Currency Formatter
- HackerRank #11 | DataTypes
- HackerRank #12 | Strings Introduction
- HackerRank #13 | Substring Comparisons
- HackerRank #14 | Abstract Class
- HackerRank #18 | BigInteger
- HackerRank #19 | Loops II
- HackerRank #20 | String Reverse
- HackerRank #23 | Instanceof keyword
- HackerRank #26 | Generics
- HackerRank #27 | 1D Array
- HackerRank #28 | Anagrams
- HackerRank #33 | Arraylist
- HackerRank #34 | Exception Handling Try / Catch
- HackerRank #36 | Exception Handling
- HackerRank #37 | List
- HackerRank #38 | SubArray
- HackerRank #39 | HashSet
- HackerRank #40 | Java Dequeue
Top comments (0)