package com.company; import javax.swing.*; public class Assignment02Functions { public double requestCurrencyAmount() { while(true) { try { return Double.parseDouble(JOptionPane.showInputDialog(null, "Please enter an amount to convert")); } catch(NumberFormatException e) { JOptionPane.showMessageDialog(null, "Please enter a valid amount"); } } } public String chooseCurrency(String conversionType) { String[] choices = { "NOK", "EUR", "JPY", "USD" }; return (String)JOptionPane.showInputDialog( null, conversionType, "Choose currency", JOptionPane.QUESTION_MESSAGE, null, choices, choices[1]); } public int keepConverting() { Object[] options = { "Yes", "No" }; return JOptionPane.showOptionDialog( null, "Do you wish to convert another currency?", "Currency Converter", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); } public double NOK_to_EUR(double amount) { return amount * 0.12; } public double NOK_to_JPY(double amount) { return amount * 17; } public double NOK_to_USD(double amount) { return amount * (1 / 8); } public double EUR_to_NOK(double amount) { return amount * (1 / 0.12); } public double EUR_to_JPY(double amount) { return NOK_to_JPY(EUR_to_NOK(amount)); } public double EUR_to_USD(double amount) { return NOK_to_USD(EUR_to_NOK(amount)); } public double JPY_to_NOK(double amount) { return amount * 1/17; } public double JPY_to_EUR(double amount) { return NOK_to_EUR(JPY_to_NOK(amount)); } public double JPY_to_USD(double amount) { return NOK_to_USD(JPY_to_NOK(amount)); } public double USD_to_NOK(double amount) { return amount * 8.0; } public double USD_to_EUR(double amount) { return NOK_to_EUR(USD_to_NOK(amount)); } public double USD_to_JPY(double amount) { return NOK_to_JPY(USD_to_NOK(amount)); } public void showConversion(double amount, String conversionCurrency, String convertedCurrency) { switch(conversionCurrency) { case "EUR": switch(convertedCurrency) { case "EUR": JOptionPane.showMessageDialog(null, amount + " EUR is " + amount + " EUR."); break; case "JPY": JOptionPane.showMessageDialog(null, amount + " EUR is " + EUR_to_JPY(amount) + " JPY."); break; case "NOK": JOptionPane.showMessageDialog(null, amount + " EUR is " + EUR_to_NOK(amount) + " NOK."); break; case "USD": JOptionPane.showMessageDialog(null, amount + " EUR is " + EUR_to_USD(amount) + " USD."); break; } break; case "NOK": switch(convertedCurrency) { case "EUR": JOptionPane.showMessageDialog(null, amount + " NOK is " + NOK_to_EUR(amount) + " EUR."); break; case "JPY": JOptionPane.showMessageDialog(null, amount + " NOK is " + NOK_to_JPY(amount) + " JPY."); break; case "NOK": JOptionPane.showMessageDialog(null, amount + " NOK is " + amount + " NOK."); break; case "USD": JOptionPane.showMessageDialog(null, amount + " NOK is " + NOK_to_USD(amount) + " USD."); break; } break; case "JPY": switch(convertedCurrency) { case "EUR": JOptionPane.showMessageDialog(null, amount + " JPY is " + JPY_to_EUR(amount) + " EUR."); break; case "JPY": JOptionPane.showMessageDialog(null, amount + " JPY is " + amount + " JPY."); break; case "NOK": JOptionPane.showMessageDialog(null, amount + " JPY is " + JPY_to_NOK(amount) + " NOK."); break; case "USD": JOptionPane.showMessageDialog(null, amount + " JPY is " + JPY_to_USD(amount) + " USD."); break; } break; case "USD": switch(convertedCurrency) { case "EUR": JOptionPane.showMessageDialog(null, amount + " USD is " + USD_to_EUR(amount) + " EUR."); break; case "JPY": JOptionPane.showMessageDialog(null, amount + " USD is " + USD_to_JPY(amount) + " JPY."); break; case "NOK": JOptionPane.showMessageDialog(null, amount + " USD is " + USD_to_NOK(amount) + " NOK."); break; case "USD": JOptionPane.showMessageDialog(null, amount + " USD is " + amount + " USD."); break; } } } } public class Assignment02Runner { public void run_assignment() { Assignment02Functions assignment02Functions = new Assignment02Functions(); do { String conversionCurrency = assignment02Functions.chooseCurrency("Which currency do you want to convert from?"); String convertedCurrency = assignment02Functions.chooseCurrency("Which currency do you want to convert to?"); double amount = assignment02Functions.requestCurrencyAmount(); assignment02Functions.showConversion(amount, conversionCurrency, convertedCurrency); } while(assignment02Functions.keepConverting() != 1); } } public class Main { public static void main(String[] args) { Assignment02Runner assignment02Runner = new Assignment02Runner(); assignment02Runner.run_assignment(); } }