首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动售货机计划

自动售货机计划
EN

Stack Overflow用户
提问于 2013-03-14 23:02:38
回答 2查看 4.7K关注 0票数 0

我必须创建一个简单的自动售货机程序,如果用户输入2个令牌,他们得到一个可以。我在代码上遇到了一点麻烦--如果我输入一个令牌并输入'Y‘,我会得到一条消息“谢谢,享受你的饮料”,而实际上它应该是一个错误。

代码语言:javascript
复制
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); 
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-14 23:05:46

我看到的一个问题是下面这行:

代码语言:javascript
复制
if(tokenIN = true && token >= 2 && cans >=1)

在应该使用相等运算符(==)的地方使用赋值运算符(=)。当你的参数是布尔值时,你真的不需要运算符。if (tokenIN)的计算结果与if(tokenIN == true)相同,因此这一行可以缩短为:

代码语言:javascript
复制
if(tokenIN && token >= 2 && cans >= 1)

注意:原始语句if(tokenIN = true && ...的计算结果始终为true,因为对true的赋值和&&运算符的短路逻辑。

票数 4
EN

Stack Overflow用户

发布于 2013-03-14 23:10:50

问题本身:

代码语言:javascript
复制
if(tokenIN = true && token >= 2 && cans >=1)

应该是:

代码语言:javascript
复制
if(tokenIN == true && token >= 2 && cans >=1)

如果你想做一个等于运算符。由于tokenIN已经是一个布尔值,您可以这样做:

代码语言:javascript
复制
if(tokenIN && token >= 2 && cans >=1)

在执行equals之类的操作时,最好始终将常量放在前面,以防止异常。用"Y".equals(scan.next())替换scan.next().equals("Y")

您可以将if\else替换为:

代码语言:javascript
复制
tokenIN = "Y".equals(scan.next());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15412799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档