In this vending machine code of mine, if I input excess funds it doesn't give me the change back. What am I missing here?
public static void main(String[] args) {
int Food = runMenu();
int Price = retrievePrice(Food);
int change = moneyInserted(Price);
}
public static int runMenu(){
Scanner keyboard = new Scanner(System.in);
int choice = 0 ;
System.out.println("\n\nPlease enter your selection:"
+ "\n1: Snickers \t 125"
+ "\n2: Reeses Cup \t 130"
+ "\n3: Doritoes \t 150"
+ "\n4: Pepsi \t 185"
+ "\n5: Exit ");
choice = keyboard.nextInt();
return choice;
}
public static int retrievePrice(int menuChoice){
if (menuChoice == 1)
return 125;
if (menuChoice == 2)
return 130;
if (menuChoice == 3)
return 150;
if (menuChoice == 4)
return 185;
else return 0;
}
public static int moneyInserted(int Price){
Scanner keyboard = new Scanner(System.in);
int money = 0;
System.out.println("Your item costs: " + Price + " Please enter the amount of money:");
money = keyboard.nextInt();
while (money < Price){
System.out.println("Please insert sufficient funds");
money = money + keyboard.nextInt();
}
return money - Price ;
}
public static void changeOut(int change){
int quarters = 0;
int dimes = 0;
int nickels = 0;
while (change >= 25){
quarters = quarters + 1;
change = change - 25;
}
while (change >= 10){
nickels = dimes + 1;
change = change - 10;
while (change >= 5){
nickels = nickels + 1;
change = change - 5;
}
}
}
Your code does return the change, you are just not using it.
Modify your code like this:
After you calculate the change, pass it to your changeOut() method which is doing the change calculation in your code. To do that, add this line to the end of the main() method:
changeOut(change);
2.There is slight logical mistake in your changeOut() method. Modify it like this:
public static void changeOut(int change){
int quarters = 0;
int dimes = 0;
int nickels = 0;
while (change >= 25){
quarters = quarters + 1;
change = change - 25;
}
while (change >= 10){
dimes = dimes + 1;
change = change - 10;
}
while (change >= 5){
nickels = nickels + 1;
change = change - 5;
}
// to see the change, print it to the console perhaps
System.out.printf("\nHere's your change:\n%d quarters, %d dimes, %d nickels and %d pennies!",
quarters, dimes, nickels, change);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With