我必须创建一个简单的自动售货机程序,如果用户输入 2 个 token ,他们就会得到 1 个 jar 头。我在使用代码时遇到了一些问题 - 如果我输入 1 个 token 并输入“Y”,我会收到消息“谢谢,祝您饮料愉快”,而实际上应该会出现错误。
import java.util.Scanner;
/**
* Vending Machine
*
* @author -
* @version 1.0
*/
public class VendingMachine
{
int cans = 10;
int token = 20;
public void fillUp (int cans)
{
if(cans <= 0)
{
cans = cans+=10;
}
}
public void tokenIn (int token)
{
Scanner scan = new Scanner (System.in);
System.out.println("Do you want something to drink? (Y/N)");
boolean tokenIN = false;
if(scan.next().equals("Y"))
{
tokenIN = true;
}
else
{
tokenIN = false;
}
if(tokenIN = true && token >= 2 && cans >=1)
{
cans--;
token-=2;
System.out.println("Thanks, enjoy your drink!");
}
else
{
System.out.println("Goodbye");
}
}
public void getTokenCount (int token)
{
System.out.println(token);
}
public void getCansCount (int cans)
{
System.out.println(cans);
}
}
最佳答案
我看到的一个问题在下面一行:
if(tokenIN = true && token >= 2 && cans >=1)
您在应该使用相等运算符 (==
) 的地方使用了赋值运算符 (=
)。当您的参数是 boolean 值时,您实际上根本不需要运算符。 if (tokenIN)
的计算结果与 if(tokenIN == true)
相同,因此该行可以缩短为:
if(tokenIN && token >= 2 && cans >= 1)
注意:原始语句 if(tokenIN = true && ...
将始终计算为 true
因为对 true
的赋值以及 &&
运算符的短路逻辑。
关于java - 自动售货机方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15412799/