java - 自动售货机方案

标签 java if-statement

我必须创建一个简单的自动售货机程序,如果用户输入 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/

相关文章:

c++ - 将数组中的位置存储为要在 if 语句中更改的变量

java - Struts 2 验证字段是否为空

java - SQLException 是否发生取决于我们检索的值

java - minSDKversion 15 无法在 Android 设备版本 : 4. 3 上运行

java - 使用 AssertJ 断言列表中的单个对象

Java正则表达式: finding match errors

Python:在满足特定条件时跳过代码块(计算)而不使用 "if"语句

c++ - 清理多个 if 语句 C++

python - 创建带有索引错误的 if 语句 - Python

javascript - 如果未切换,则通过两次单击切换一个 div