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
79 changes: 37 additions & 42 deletions TravelCostCalculator.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// Nehara S.A.T. EG/2020/4092

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
Expand All @@ -6,66 +8,59 @@
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]));
}
}
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<>();

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]));
/**
* loads CSV type hotelData to a Map
* @param-file contains csv type hotelRates data
* @param-Map
*/
private static void loadHotelRates(String file,Map<String, Double> data) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
data.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]));
}
}

public static void main(String[] args) {
try {
l1("data/hotel_rates.csv");
l2("data/exchange_rates.csv");
l3("data/flight_costs.csv");
loadData("data/hotel_rates.csv", hotelRates);
loadData("data/exchange_rates.csv", exchangeRates);
loadData("data/flight_costs.csv", flightCosts);

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);
String destination = reader.readLine().toUpperCase();
double flightCost = flightCosts.getOrDefault(destination, 0.0);

System.out.print("Enter your stay duration in days: ");
int stay_duration = Integer.parseInt(reader.readLine());
hotel_cost *= stay_duration;

double total_cost_usd = flight_cost + hotel_cost;
int stayDuration = Integer.parseInt(reader.readLine());

//hotelCost is calculated by multiplying hotelcost by stay_duration
hotelCost *= stay_duration;

//totalCostUsd is calculated by multiplying hotelcost by stay_duration
double totalCostUsd = flightCost + hotelCost;

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);

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);
String[] availableCurrencies = exchangeRates.keySet().toArray(new String[0]);

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();
System.out.print("Select your currency for final price estimation(" + String.join(", ", availableCurrencies) + "): ");

double final_price_local_currency = total_cost_usd * b.get(selected_currency);
String selectedCurrency = reader.readLine();
double finalPriceLocalCurrency = totalCostUsd * exchangeRates.get(selectedCurrency);

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