如果满足多个条件,如何使用 If 语句计算数字?

Posted

技术标签:

【中文标题】如果满足多个条件,如何使用 If 语句计算数字?【英文标题】:How do I calculate numbers with If statement if more than one condition is met? 【发布时间】:2014-10-11 16:00:27 【问题描述】:

我在下面用我所做的更改编辑了我的代码。这是我得到的输出。

请输入项目。进口香水瓶 请输入进口香水瓶价格:47.50 是否要继续添加项目? (Y 型)表示是,(N 型)表示 No.n 您的购物车包含以下商品含税进口巧克力盒=10.00, 进口香水瓶=67.50 67.50

一盒巧克力应该是10.50,进口瓶应该是54.65。我使用调试器,看到我使用的总价格变量保持 10.50,但看起来它变回了。此外,而不是读取具有

的循环
 if (item.contains("imported") && item.contains("bottle")) 

它读取

 else if (item.contains("imported"))

首先。我的完整代码如下。

public class SalesTax 

public static void main(String[] args) 

    // Input items for shopping cart
    HashMap<String, String> cart = new HashMap<String, String>();
    HashMap<String, String> shoppingcart = new HashMap<String, String>();

    // Create a Scanner
    Scanner input = new Scanner(System.in);

    // variables
    char done;

    //boolean goods;
    double totalprice = 0.00;
    double taxprice;

    // Pick items for list.
    do 
      
        System.out.print("Please enter an item.");
        String item = input.nextLine();

        System.out.print("Please enter the price for "+ item + ": ");
        String price = input.nextLine(); 

        double price1 = Double.parseDouble(price);
        totalprice += price1; 

        //System.out.println(String.format("%.2f",totalprice));
        String price2 = String.valueOf(price1);
        cart.put(item, price2);

        //determine if item will have additional tax
        if (item.contains("music"))
        
             price1 = Double.parseDouble(price);
            taxprice = price1 * .10;

            totalprice = (totalprice + taxprice);

            //System.out.println(String.format("%.2f",totalprice));
            String newprice2 = String.valueOf(String.format("%.2f", price1 * 1.10));
            shoppingcart.put(item,newprice2);
        
        else if (item.contains("imported"))
        
             price1 = Double.parseDouble(price);
            taxprice = price1 * .05;

            totalprice = (totalprice + taxprice);

            //System.out.println(String.format("%.2f",totalprice));
            String newprice2 = String.valueOf(String.format("%.2f", totalprice));
            shoppingcart.put(item,newprice2);
        
        if (item.contains("imported") && item.contains("bottle"))
        
             price1 = Double.parseDouble(price);
            taxprice = price1 * (.05 + .10);

            totalprice = (totalprice + taxprice);

            //System.out.println(String.format("%.2f",totalprice));
            String newprice2 = String.valueOf(String.format("%.2f", totalprice));
            shoppingcart.put(item,newprice2);
        
        else if(item.contains("bottle"))
        
             price1 = Double.parseDouble(price);
            taxprice = price1 * .10;

            totalprice = (price1 + taxprice);

            //System.out.println(String.format("%.2f",totalprice));
            String newprice2 = String.valueOf(String.format("%.2f", price1 * 1.10));
            shoppingcart.put(item,newprice2);
        
        else 
        
            shoppingcart.put(item, price);
        


        System.out.print("Would you like to continue to add items? (Type Y) for Yes and (Type N) for No.");
        done = input.nextLine().charAt(0);
     while(Character.toUpperCase(done) == 'Y');

   System.out.println("Your cart contains the following at items with tax" + shoppingcart); //+ String.format("%.2f", totalprice));
   System.out.println(String.format("%.2f",totalprice));

【问题讨论】:

使用&amp;&amp; 运算符! 不要使用else if 在循环中分别处理每个项目。 哦,欢迎来到 ***:D 作为补充:使用double 进行涉及金钱的算术并不是一个好主意,因为浮点算术并不精确。您应该考虑改用BigDecimal。 ***.com/questions/6320209/… 【参考方案1】:

使用&amp;&amp; 运算符。它称为逻辑与运算符

//if item contains both "imported" and "bottle"
if (item.contains("imported") && item.contains("bottle"))
    //code

Read more about operators here.

【讨论】:

称为逻辑和运算符。 @clcto 谢谢。已更新。【参考方案2】:

每当您使用任何类型的if 语句时,您都会向它传递一个布尔变量。 Java 中有两个逻辑运算符,它们接受两个布尔值并输出一个布尔值:

&&(逻辑与) || (逻辑或)

b1 &amp;&amp; b2true 如果 b1b2true - 否则是 false

如果b1b2 或两者都是true,则b1 || b2true - 否则为false

如果您想在输入文本中包含"music""bottle" 时执行相同的代码块,您可以执行以下操作:

if(items.contains("music") || items.contains("bottle")) 
    //modify prices

【讨论】:

以上是关于如果满足多个条件,如何使用 If 语句计算数字?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何实现满足多条件匹配简单过滤问题

excel函数:计算是不是满足计算值,满足直接计算,如不满足则返回一个固定值?

条件语句和循环语句

在 C++ 中满足某些条件(如果)后,如何重新启动 while 循环? [关闭]

if - elif 语句

控制语句