Вы можете запустить ее, и она предоставит вам два варианта действий. либо калькулятор APY, либо калькулятор чеков.
если вы запустите расчет APY. в конечном итоге он завершит свой процесс и вернется к исходному вопросу. Однако если я запустил проверку Calc. он достигнет конца своей программы, а затем выйдет из нее, не запрашивая ввода пользователя. Я запустил программу в режиме отладки, и, похоже, она работает через «getUserSelection1» -> «getIntInput» -> «getStringInput», и именно здесь, похоже, начинается проблема. если я запускаю какой-либо свой код, он возвращается сюда (строка 168, если вы помещаете его в любое приложение программирования) и запрашивает ввод пользователя с помощью
Код: Выделить всё
String line = scanner.nextLine();
Код: Выделить всё
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