Я создал программу как часть моей вычислительной работы для проверки запаса, и она отлично работает, однако, после того, как пользователь прошел через программу после проверки запаса одного элемента, им задают вопрос, хотят ли они проверять запас другого товара в котором одна и та же строка печатается дважды, и я не могу понять, почему ?. Это код:Почему эта строка печатается дважды?
import java.util.*;
public class stock {
public static void main(String[] args) {
//initialising the scanners
Scanner stock = new Scanner(System.in);
Scanner levels = new Scanner(System.in);
Scanner bar = new Scanner(System.in);
Scanner choice = new Scanner(System.in);
//initialising the string variables
String chocolate;
String chocolate2;
String change;
String choiceb;
//initialising the integer variables
int mars = 200;
int twix = 200;
int bounty = 200;
int doubled = 200;
int galaxy = 200;
int change2;
int counter = 1;
int a = 1;
//asking the user what chocolate bar they want to check stock of
System.out.println("Enter the chocolate bar to check stock of: Mars, Twix, Bounty, Double and Galaxy");
System.out.println("***********************************");
chocolate = stock.nextLine();
System.out.println("***********************************");
//depending on the users choice, this switch statement outputs the appropriate stock level of the bar entered
switch (chocolate.toLowerCase()) {
case ("mars"):
System.out.println("There is currenty " + mars + " in stock");
break;
case ("twix"):
System.out.println("There is currenty " + twix + " in stock");
break;
case ("bounty"):
System.out.println("There is currenty " + bounty + " in stock");
break;
case ("double"):
System.out.println("There is currenty " + doubled + " in stock");
break;
case ("galaxy"):
System.out.println("There is currenty " + galaxy + " in stock");
break;
default:
System.out.println("Your an idiot, try again");
chocolate = stock.nextLine();
}
//the user is then asked if they want to change stock level of any of the chocolate bars
System.out.println("Do you want to change stock levels?");
System.out.println("***********************************");
change = levels.nextLine();
System.out.println("***********************************");
//if the answer is yes it carries on with the program and ignores this if statement. if the answer is no, the program closes
if (change.equals("no")) {
System.exit(0);
}
//this while loop and switch statement is used to check what chocolate bar stock level the user wants to change. 1 is subtracted from the counter
// on the users first input so that the message of checking if the user wants to change any more appears. this
while (a == 1){
if (counter == 0) {
System.out.println("Do you want to change the stock of any more");
choiceb = choice.nextLine();
counter = counter + 1;
}else{
System.out.println("Which chocolate do you want to change stock levels of?");
System.out.println("***********************************");
chocolate2 = bar.nextLine();
System.out.println("***********************************");
switch (chocolate2.toLowerCase()) {
case ("mars"):
System.out.println("Enter the amount of Mars Bars currently in stock");
mars = bar.nextInt();
System.out.println("There is now " + mars + " in stock");
counter = counter - 1;
break;
case ("twix"):
System.out.println("Enter the amount of Twix currently in stock");
twix = bar.nextInt();
System.out.println("There is now " + twix + " in stock");
counter = counter - 1;
break;
case ("bounty"):
System.out.println("Enter the amount of Bounty Bars currently in stock");
bounty = bar.nextInt();
System.out.println("There is now " + bounty + " in stock");
counter = counter - 1;
break;
case ("double"):
System.out.println("Enter the amount of Double Bars currently in stock");
doubled = bar.nextInt();
System.out.println("There is now " + doubled + " in stock");
counter = counter - 1;
break;
case ("galaxy"):
System.out.println("Enter the amount of Galaxy currently in stock");
galaxy = bar.nextInt();
System.out.println("There is now " + galaxy + " in stock");
counter = counter - 1;
break;
}
}
}
}
}
Это выход, когда программа RAN:
Хорошим задание для публикации этого короткого, компилируемого примера. – christopher
Я думаю, что проблема связана с 4-мя различными сканерами, все из которых читаются из System.in, добавляют инструкцию по умолчанию к вашему предложению switch и кладут шоколад2.toLowerCase(). Я мог бы представить, что шоколад2 также содержит вход «да», и это не признано в разделе switch – Michael
. Хорошо, я могу использовать один сканер для ввода всех пользователей? – haroldj97