Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 70 additions & 39 deletions TravelCostCalculator.java
Original file line number Diff line number Diff line change
@@ -1,74 +1,105 @@
// EG_2020_3912
// DISSANAYAKE D.M.M.I.T

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;


public class TravelCostCalculator {
static Map<String, Double> a = new HashMap<>();
static Map<String, Double> b = new HashMap<>();
static Map<String, Double> c = new HashMap<>();

static void l1(String file) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(file));
String i;
while ((i = reader.readLine()) != null) {
String[] p = i.split(",");
a.put(p[0].toUpperCase(), Double.parseDouble(p[1]));

// Constants for data files
private static final String HOTEL_RATES_FILE = "data/hotel_rates.csv";
private static final String EXCHANGE_RATES_FILE = "data/exchange_rates.csv";
private static final String FLIGHT_COSTS_FILE = "data/flight_costs.csv";

// Maps to store data
private static final Map<String, Double> hotelRates = new HashMap<>();
private static final Map<String, Double> exchangeRates = new HashMap<>();
private static final Map<String, Double> flightCosts = new HashMap<>();

// Load hotel rates from a file into the hotelRates map
private static void loadHotelRates(String file) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
hotelRates.put(parts[0].toUpperCase(), Double.parseDouble(parts[1]));
}
}
}

static void l2(String file) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(file));
String i;
while ((i = reader.readLine()) != null) {
String[] p = i.split(",");
b.put(p[0].toUpperCase(), Double.parseDouble(p[1]));
// Load exchange rates from a file into the exchangeRates map
private static void loadExchangeRates(String file) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
exchangeRates.put(parts[0].toUpperCase(), Double.parseDouble(parts[1]));
}
}
}

static void l3(String file) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(file));
String i;
while ((i = reader.readLine()) != null) {
String[] p = i.split(",");
c.put(p[0].toUpperCase(), Double.parseDouble(p[1]));
// Load flight costs from a file into the flightCosts map
private static void loadFlightCosts(String file) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
flightCosts.put(parts[0].toUpperCase(), Double.parseDouble(parts[1]));
}
}
}

public static void main(String[] args) {
try {
l1("data/hotel_rates.csv");
l2("data/exchange_rates.csv");
l3("data/flight_costs.csv");
// Load data from files
loadHotelRates("data/hotel_rates.csv");
loadExchangeRates("data/exchange_rates.csv");
loadFlightCosts("data/flight_costs.csv");

// Input from user
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

System.out.print("Enter your destination: ");
String destination = reader.readLine().toUpperCase();

double flight_cost = c.getOrDefault(destination, 0.0);
double hotel_cost = a.getOrDefault(destination, 0.0);
// Calculate flight cost and hotel cost
double flightCost = flightCosts.getOrDefault(destination, 0.0);
double hotelCost = hotelRates.getOrDefault(destination, 0.0);

// Input number of days stay from user
System.out.print("Enter your stay duration in days: ");
int stay_duration = Integer.parseInt(reader.readLine());
hotel_cost *= stay_duration;
int stayDuration = Integer.parseInt(reader.readLine());

// Update hotelCost
hotelCost *= stayDuration;

double total_cost_usd = flight_cost + hotel_cost;
double totalCostUSD = flightCost + hotelCost;

System.out.printf("Flight cost: USD %.2f\n", flight_cost);
System.out.printf("Hotel cost (%d days): USD %.2f\n", stay_duration, hotel_cost);
System.out.printf("Total: USD %.2f\n", total_cost_usd);
/**
* Print flightCost
* Print stayDuration and hotelCost
* Print totalCoust
*/
System.out.printf("Flight cost: USD %.2f\n", flightCost);
System.out.printf("Hotel cost (%d days): USD %.2f\n", stayDuration, hotelCost);
System.out.printf("Total: USD %.2f\n", totalCostUSD);

String[] available_currencies = b.keySet().toArray(new String[0]);
System.out.print("Select your currency for final price estimation(" + String.join(", ", available_currencies) + "): ");
String selected_currency = reader.readLine();
String[] availableCurrencies = exchangeRates.keySet().toArray(new String[0]);
System.out.print("Select your currency for final price estimation(" + String.join(", ", availableCurrencies) + "): ");
String selectedCurrency = reader.readLine();

double final_price_local_currency = total_cost_usd * b.get(selected_currency);
// Calculate finalPrice
double finalPriceLocalCurrency = totalCostUSD * exchangeRates.get(selectedCurrency);

System.out.printf("Total in %s: %.2f\n", selected_currency, final_price_local_currency);
} catch (IOException e) {
// Print selectedCurrency & finalPriceLocalCurrency
System.out.printf("Total in %s: %.2f\n", selectedCurrency, finalPriceLocalCurrency);
} catch (IOException e)
{
e.printStackTrace();
}
}
Expand Down