Самый простой способ конвертировать все расчеты в долларах США в евро?(Джава) - PullRequest
0 голосов
/ 17 февраля 2019

Я создаю код банкомата, который рассчитывает, сколько деноминаций в долларах США / евро (20 с, 10 с, 5 с, 1 с, центов) будет снято в зависимости от введенной пользователем суммы.Я уже выполнил расчеты в долларах США ... но теперь мне нужно преобразовать все это в евро (* 1,13) и вывести его в новый файл .txt (используя PrintStream = new PrintStream).

Я рассматривал вопрос о том, чтобы умножить введенное пользователем число в долларах США на 1,13, а затем использовать эту новую сумму для повторения моих расчетов (написание всего нового набора объявлений, а затем перепечатывание в .txt).Моя главная задача - найти более простой способ сделать это и вывести все на новый .txt.

Любой совет с благодарностью!

import java.math.BigDecimal;
import java.io.PrintStream;
import java.util.Scanner;
import java.io.FileOutputStream;
import java.io.IOException;

public class ATM1 {
    
    private static final BigDecimal FIVE = new BigDecimal("5");
    private static final BigDecimal TEN = new BigDecimal("10");
    private static final BigDecimal TWENTY = new BigDecimal("20");
    private static final BigDecimal ONE_HUNDRED = new BigDecimal("100");

    public static void main(String[] args) throws IOException {
        
        System.out.print("Please enter USD withdrawal amount: ");
        Scanner user = new Scanner(System.in);
        BigDecimal usdTotal = user.nextBigDecimal();
        BigDecimal billsOut;
        BigDecimal bills20 = usdTotal.divide(TWENTY, 0, BigDecimal.ROUND_DOWN);

        BigDecimal remainder10 = usdTotal.remainder(TWENTY);
        BigDecimal bills10 = remainder10.divide(TEN, 0, BigDecimal.ROUND_DOWN);

        BigDecimal bills5 = remainder10.subtract(bills10.multiply(TEN)).divide(FIVE, 0, BigDecimal.ROUND_DOWN);
        BigDecimal remainder5 = remainder10.remainder(FIVE.setScale(0, BigDecimal.ROUND_DOWN));

        BigDecimal bills1 = (remainder5.setScale(0, BigDecimal.ROUND_DOWN));
        BigDecimal cents = usdTotal.setScale(2, BigDecimal.ROUND_DOWN).subtract(usdTotal.setScale(0, BigDecimal.ROUND_DOWN))
          .multiply(ONE_HUNDRED);

        System.out.println("Twenty Dollar Bills: " + bills20);
        System.out.println("Ten Dollar Bills: " + bills10);
        System.out.println("Five Dollar Bills: " + bills5);
        System.out.println("One Dollar Bills: " + bills1);
        System.out.println("Cents: " + cents.toBigInteger());
        
       
        
       user.close(); 
        
        
       
      
          PrintStream output = new PrintStream("euro.txt");
          System.setOut(output); 
        
        
        
         
          
   }
}

       

1 Ответ

0 голосов
/ 17 февраля 2019

Существует несколько API, которые обеспечивают простое преобразование из одной валюты в другую, но только для 1000 обращений.Если вам потребуется больше хитов, возможно, вам придется их оплатить.

package myPackage;

import java.math.BigDecimal;
import java.io.PrintStream;
import java.util.Scanner;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {

    private static final BigDecimal FIVE = new BigDecimal("5");
    private static final BigDecimal TEN = new BigDecimal("10");
    private static final BigDecimal TWENTY = new BigDecimal("20");
    private static final BigDecimal ONE_HUNDRED = new BigDecimal("100");

    public static void main(String[] args) throws IOException {

        System.out.print("Please enter USD withdrawal amount: ");
        Scanner user = new Scanner(System.in);
        BigDecimal usdTotal = user.nextBigDecimal();
        BigDecimal euroTotal = usdTotal.multiply(new BigDecimal("1.13")).setScale(2, BigDecimal.ROUND_HALF_UP);

        calculateNotes(usdTotal, "USD");
        calculateNotes(euroTotal, "EURO");

        user.close();

        PrintStream output = new PrintStream("euro.txt");
        System.setOut(output);

    }

    private static void calculateNotes(BigDecimal total, String currency) {
        BigDecimal bills20 = total.divide(TWENTY, 0, BigDecimal.ROUND_DOWN);

        BigDecimal remainder10 = total.remainder(TWENTY);
        BigDecimal bills10 = remainder10.divide(TEN, 0, BigDecimal.ROUND_DOWN);

        BigDecimal bills5 = remainder10.subtract(bills10.multiply(TEN)).divide(FIVE, 0, BigDecimal.ROUND_DOWN);
        BigDecimal remainder5 = remainder10.remainder(FIVE.setScale(0, BigDecimal.ROUND_DOWN));

        BigDecimal bills1 = (remainder5.setScale(0, BigDecimal.ROUND_DOWN));
        BigDecimal cents = total.setScale(2, BigDecimal.ROUND_DOWN).subtract(total.setScale(0, BigDecimal.ROUND_DOWN))
                .multiply(ONE_HUNDRED);

        System.out.println("CURRENCY : " + currency);
        System.out.println("Twenty Dollar Bills: " + bills20);
        System.out.println("Ten Dollar Bills: " + bills10);
        System.out.println("Five Dollar Bills: " + bills5);
        System.out.println("One Dollar Bills: " + bills1);
        System.out.println("Cents: " + cents.toBigInteger() + "\n");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...