当我输入饮料时,我的循环出现问题,例如水,茶,苏打水。
此外,我不希望它在用户输入饮料选项之前打印返回,但每次都会显示。
import java.util.Scanner;
public class Vending
{
public static void main(String[] args)
{
System.out.print("Enter a command = ");
double balance = 0.0;
String a;
// scanner input
Scanner in = new Scanner(System.in);
while (in.hasNext())
{
String command = in.nextLine();
if (command.equals("penny"))
{
balance = balance + 0.01;
System.out.println("balance = " + balance);
}
if (command.equals("nickel"))
{
balance = balance + 0.05;
System.out.println("balance = " + balance);
}
if (command.equals("dime"))
{
balance = balance + 0.10;
System.out.println("balance = " + balance);
}
if (command.equals("quarter"))
{
balance = balance + 0.25;
System.out.println("balance = " + balance);
}
if (command.equals("dollar"))
{
balance = balance + 1.00;
System.out.println("balance = " + balance);
}
else if (command.equals("break"))
{
break;
}
else if (command.equals("water"))
{
System.out.println("Water");
System.out.println("balance = " + balance - 1.25);
}
else if (command.equals("tea"))
{
System.out.println("Tea");
System.out.println("balance = " + balance - 1.50);
}
else if (command.equals("soda"))
{
System.out.println("soda");
System.out.println("balance = " + balance - 1.75);
}
else
{
System.out.println("return " + balance + " to customer");
}
balance++;
}
}
}
答案 0 :(得分:0)
这种情况正在发生,因为您没有立即开始使用 else if
。您应该在首次使用 if
后使用此功能。
它从第一个if开始,检查它,然后移动到下一个if。当您到达检查dollar
的部分时,如果dollar
为假,则只检查其他部分。这是因为它们是else if
。
因此,如果您输入dime
,它将添加0.10,然后检查季度,然后是美元。然后它进入else if
块。然后它检查休息,水,茶等,然后发现所有都是假的。(你放入一角钱)然后点击打印余额的else块。
因此,为了解决这个问题,您应该使用单独的方法来检查货币价值或物品。
答案 1 :(得分:0)
在Java 7中的switch语句支持“String”值,尝试改变你的代码:
String command = in.nextLine();
switch(command) {
case "penny":
//do something
break;
case "water":
//do something
break;
case "tea":
//do something
break;
case "soda":
//do something
break;
default:
System.out.println("return " + balance + " to customer");
}
balance++;
希望这有助于解决您的问题。
答案 2 :(得分:0)
好的,我可以在这里看到几个问题
你永远不会减少与物品价格的平衡...而不是余额++;。将其改为平衡 - =价格; (余额=余额 - 价格;)
while (in.hasNext()) {
String command = in.next();
double price = 0.0;
...
...
else if (command.equals("water")) {
System.out.println("Water");
price = 1.25;
} else if (command.equals("tea")) {
System.out.println("Tea");
price = 1.50;
} else if (command.equals("soda")) {
System.out.println("soda");
price =1.75;
}
balance -= price;
System.out.println("balance is " + balance);
}
System.out.println("return " + balance + " to customer");