Новичок в Java здесь.Я написал программу преобразования времени, которая принимает любое число от 0 до 9e + 18 в качестве действительного ввода и запрашивает параметры преобразования у пользователя, например, от недель до секунд.Все вычисления были написаны в огромном блоке строк if-else-if-else внутри цикла do-while.Программа завершается всякий раз, когда пользователь вводит «q» для выхода.Моя текущая программа безупречно выполняет преобразование между различными единицами времени.
Мой вопрос заключается в том, как использовать операторы switch вместо этого ужасного блока if-else?
if (fromUnit.equals("w") && toUnit.equals("s")) {
results = userNumber * SECONDS_PER_WEEK;
System.out.printf("There are %,.2f seconds", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "week" : "weeks");
} else if (fromUnit.equals("h") && toUnit.equals("s")) {
results = userNumber * SECONDS_PER_HOUR;
System.out.printf("There are %,.2f seconds", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "hour" : "hours");
} else if (fromUnit.equals("d") && toUnit.equals("s")) {
results = userNumber * SECONDS_PER_DAY;
System.out.printf("There are %,.2f seconds", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "day" : "days");
} else if (fromUnit.equals("m") && toUnit.equals("s")) {
results = userNumber * SECONDS_PER_MINUTE;
System.out.printf("There are %,.2f seconds", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "minute" : "minutes");
} else if (fromUnit.equals("s") && toUnit.equals("s")) {
results = userNumber * SECONDS_PER_SECOND;
System.out.printf("There are %,.2f seconds per second.\n", results);
} else if (fromUnit.equals("w") && toUnit.equals("m")) {
results = userNumber * MINUTES_PER_WEEK;
System.out.printf("\nThere are %,.2f minutes", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "week" : "weeks");
} else if (fromUnit.equals("d") && toUnit.equals("m")) {
results = userNumber * MINUTES_PER_DAY;
System.out.printf("\nThere are %,.2f minutes", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "day" : "days");
} else if (fromUnit.equals("h") && toUnit.equals("m")) {
results = userNumber * MINUTES_PER_HOUR;
System.out.printf("\nThere are %,.2f minutes", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "hour" : "hours");
} else if (fromUnit.equals("m") && toUnit.equals("m")) {
results = userNumber * MINUTES_PER_MINUTE;
System.out.printf("\nThere are %,.2f minutes", results);
System.out.printf(" in %,d %s.\n", userNumber, userNumber == 1 ? "minute" : "minutes");
} else if (fromUnit.equals("h") && toUnit.equals("h")) {
results = userNumber * HOURS_PER_HOUR;
System.out.printf("\nThere are %,.2f hours in %,d hours.\n", results, userNumber);
} else if (fromUnit.equals("d") && toUnit.equals("h")) {
results = userNumber * HOURS_PER_DAY;
System.out.printf("\nThere are %,.2f hours in %,d days.\n", results, userNumber);
} else if (fromUnit.equals("w") && toUnit.equals("h")) {
results = userNumber * HOURS_PER_WEEK;
System.out.printf("\nThere are %,.2f hours in %,d weeks.\n", results, userNumber);
} else if (fromUnit.equals("d") && toUnit.equals("d")) {
results= userNumber * DAYS_PER_DAY;
System.out.printf("\nThere are %,.2f days in %,d days.\n", results, userNumber);
} else if (fromUnit.equals("w") && toUnit.equals("d")) {
results = userNumber * DAYS_PER_WEEK;
System.out.printf("\nThere are %,.2f days in %,d weeks.\n", results, userNumber);
} else if (fromUnit.equals("s") && toUnit.equals("ms")) {
results = userNumber * MICROSECONDS_PER_SECOND;
System.out.printf("\nThere are %,.3f microseconds in %,d seconds.\n", results, userNumber);
} else if (fromUnit.equals("d") && toUnit.equals("w")) {
results = userNumber * WEEKS_PER_DAY;
System.out.printf("\nThere are %,.3f weeks in %,d days.\n", results, userNumber);
} else if (fromUnit.equals("h") && toUnit.equals("d")) {
results = userNumber * DAYS_PER_HOUR;
System.out.printf("\nThere are %,.3f days in %,d hours.\n", results, userNumber);
} else if (fromUnit.equals("s") && toUnit.equals("h")) {
results = userNumber * HOURS_PER_MINUTE * MINUTES_PER_SECOND;
System.out.printf("\nThere are %,.3f hours in %,d seconds.\n", results, userNumber);
} else if (fromUnit.equals("ms") && toUnit.equals("s")) {
results = userNumber * SECONDS_PER_MICROSECOND;
System.out.printf("\nThere are %,.3f seconds in %,d microseconds.\n", results, userNumber);
} else if (fromUnit.equals("m") && toUnit.equals("ms")) {
results = userNumber * MICROSECONDS_PER_MINUTE;
System.out.printf("\nThere are %,.3f microseconds in %,d minutes.\n", results, userNumber);
} else if (fromUnit.equals("h") && toUnit.equals("ms")) {
results = userNumber * MICROSECONDS_PER_HOUR;
System.out.printf("\nThere are %,.3f microseconds in %,d hours.\n", results, userNumber);
} else if (fromUnit.equals("d") && toUnit.equals("ms")) {
results = userNumber * MICROSECONDS_PER_DAY;
System.out.printf("\nThere are %,.3f microseconds in %,d days.\n", results, userNumber);
} else if (fromUnit.equals("w") && toUnit.equals("ms")) {
results = userNumber * MICROSECONDS_PER_WEEK;
System.out.printf("\nThere are %,.3f microseconds in %,d weeks.\n", results, userNumber);
} else {
System.out.println("\nCannot calculate!\n");
}
} while (userNumber >= 0);
}
}