Мой оператор Switch завершается, хотя он должен сканировать ввод пользователяJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Мой оператор Switch завершается, хотя он должен сканировать ввод пользователя

Сообщение Anonymous »

Это весь код, использованный в моей небольшой тестовой программе.
Вы можете запустить ее, и она предоставит вам два варианта действий. либо калькулятор APY, либо калькулятор чеков.
если вы запустите расчет APY. в конечном итоге он завершит свой процесс и вернется к исходному вопросу. Однако если я запустил проверку Calc. он достигнет конца своей программы, а затем выйдет из нее, не запрашивая ввода пользователя. Я запустил программу в режиме отладки, и, похоже, она работает через «getUserSelection1» -> «getIntInput» -> «getStringInput», и именно здесь, похоже, начинается проблема. если я запускаю какой-либо свой код, он возвращается сюда (строка 168, если вы помещаете его в любое приложение программирования) и запрашивает ввод пользователя с помощью

Код: Выделить всё

String line = scanner.nextLine();
но затем, после запуска моего расчета проверки, он просто пропускает его и не запрашивает никаких дополнительных данных. И поскольку ни один ввод не равен -1, он заканчивается.

Код: Выделить всё

package MCS;

import java.text.DecimalFormat;
import java.util.List;
import java.util.Objects;
import java.util.Scanner;

public class mcs {
private Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
new mcs().processUserSelections();
}

private void processUserSelections() {
boolean done = false;

while (!done) {
try {
int selection = getUserSelection1();
System.out.println(done);
switch (selection) {
case -1:
done = exitMenu1();
break;
case 1:
APYCalc();
break;
case 2:
checkCalc();
break;
default:
System.out.println("\n" + selection + " is not a valid selection.  Try again.");
break;
}
}
catch(Exception e) {
System.out.println("\nError: " + e + " Try again.");
}
}
}

private boolean exitMenu1() {
System.out.println("Exiting the menu.");
return true;
}

private void APYCalc() {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);

System.out.println("Enter Your Savings: ");
double savings = scanner.nextDouble();

System.out.println("Enter Your APY: ");
double APY = scanner.nextDouble();

System.out.println("Enter how many years you want to iterate: ");
int iter = scanner.nextInt();

System.out.println("Enter how much will you put in every year: ");
double input = scanner.nextDouble();

APY(savings, APY, iter, input);
}

public static void APY(double savings, double APY, int iter, double input) {
double increasedSavings = 0, totalEarnedFromBaseValue = 0;

if (APY >= 1.00) {
APY = APY / 100;
}
System.out.println("Starting Value: " + savings);
for(int i = 1; i = 1.00) {
state = state / 100;
System.out.println(state);
}
if (federal >= 1.00) {
federal = federal / 100;
System.out.println(federal);
}

sSTax = gross * sS;

medicalTax = gross * medical;

federalTax = gross * federal;

stateTax = gross * state;
taxedIncome = gross - medicalTax - federalTax - sSTax - stateTax;

return taxedIncome;
}

private int getUserSelection1() throws Exception {
printOperations1();

Integer input = getIntInput("Enter a menu selection");

return Objects.isNull(input) ? -1 : input;
}

private void printOperations1() {
System.out.println("\nThese are the available selections.  Press the Enter key to quit:");
operations1.forEach(line -> System.out.println("   " + line));
}

private Integer getIntInput(String prompt) throws Exception {
String input = getStringInput(prompt);

if (Objects.isNull(input)) {
return null;
}
try {
return Integer.valueOf(input);
}
catch(NumberFormatException e) {
throw new Exception("'" + input + "'" + " is not a valid number.");
}
}

private String getStringInput(String prompt) {
System.out.println(prompt + ": ");
String line = scanner.nextLine();

return line.isBlank() ? null : line.trim();
}

private double addHours() {
double inputHour, totalHours = 0;
do {
System.out.println("Type 0 to finish adding hours " +
"\nEnter Hours: ");

inputHour = scanner.nextDouble();

totalHours += inputHour;

} while (inputHour > 0);
System.out.println("Total hours: " + totalHours);
return totalHours;
}

// @formatter:off
private List operations1 = List.of(
"1) APY Calculator",
"2) Check Calculator"
);

// @formatter:on
}
Спасибо всем, кто нашел время, чтобы помочь мне!!! Спокойной ночи.
полностью измените способ работы моего кода. Первоначально выбрав «Hack Calc», вы попадете в другое меню, похожее на первое, которое вы видите, и спросит, хотите ли вы ввести общее количество часов или программа добавит его за вас. Я надеялся, что удаление второго оператора переключения решит проблему. но это не так.

Подробнее здесь: https://stackoverflow.com/questions/791 ... user-input
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»