Хорошо, во-первых, пожалуйста, сделайте правильный отступ с достаточным количеством комментариев, чтобы объяснить ваш мыслительный процесс.
Во-вторых, есть еще несколько неясных вещей.
try { // checks command, throws exception if not A, B, C or Q
if (command.equals("A")) {
System.out.println("Enter a value for side A:");
sideA = scanner.nextDouble(); // throws InputMismatchException if not a double
scanner.nextLine();
в приведенном выше коде в последней строке у вас есть входные данные, взятые из объекта класса Scanner, которые ни во что не сохраняются.
Зачем вам это нужно?Какова его цель?
В-третьих, в вашем коде много дубликатов кода с количеством IF-ELSE-IF
.Попробуйте этот же код с SWITCH , именно этой проблемы вы можете избежать, если будете использовать SWITCH вместо IF-ELSE .
И причина того, что вы по-прежнему получаете Prompt на enter a command
, заключается в том, что вы поместили его в цикл while.Извлечение его из этого места и замена его извне сделают свое дело.
Что подводит меня к моему последнему пункту, как только вы получите то, что вам нужно т.е. правильный ответ или исключение для неверного ввода , тогда зачем вам продолжать проверять один и тот же оператор снова и снова?
while(true){
......
......
......
}
будет выполняться бесконечно и продолжать проверять одно и то же условие снова и сноваснова, предоставляя вам то же исключение, что и ваши выходные данные бесконечно раз.
Чтобы устранить эту проблему, либо удалите while loop
, либо принимайте другой ввод от пользователя, пока он не введет желаемое значение, а затем break
как только будет достигнут желаемый .