java 自动售货机程序java
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/37176165/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Vending machine program java
提问by Doomboy911
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;
}
}
}
回答by Sна?ош?а?
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 yourchangeOut()
method which is doing the change calculation in your code. To do that, add this line to the end of themain()
method:changeOut(change);
计算 后
change
,将其传递给您的changeOut()
方法,该方法在您的代码中进行更改计算。为此,请将此行添加到main()
方法的末尾:changeOut(change);
2.There is slight logical mistake in your changeOut()
method. Modify it like this:
2.你的changeOut()
方法有轻微的逻辑错误。像这样修改它:
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);
}
回答by Pratik Sherdiwala
private static int totalNotes = 0;
private static int amount = 0;
private static void printAmount(int maxAmt) {
amount = amount - maxAmt;
totalNotes++;
System.out.print(maxAmt + "-");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter Amount");
amount = scanner.nextInt();
int maxAmt = 0;
while (amount != 0) {
if (amount >= 2000) {
maxAmt = 2000;
} else if (amount >= 500) {
maxAmt = 500;
} else if (amount >= 200) {
maxAmt = 200;
} else if (amount >= 100) {
maxAmt = 100;
} else if (amount >= 50) {
maxAmt = 50;
} else if (amount >= 20) {
maxAmt = 20;
}
// as same you can do this for
/*10, 5, 2, 1*/
printAmount(maxAmt);
}
System.out.println("\nTotal notes : " + totalNotes);
}