java - while 循环不适用于两个 if 语句

标签 java loops if-statement while-loop statements

我尝试过在网上到处搜索,但找不到。基本上我想制作一个程序,让你可以选择你想要的饮料,然后当你输入饮料时,它会告诉你它是多少。我使用了 while 循环,因此如果您输入错误的价格,它会一直询问正确的价格,直到您选择为止。它对于我的第一杯饮料“百事可乐”来说效果很好,但是当我选择可乐时,代码根本不运行......它甚至不询问价格。

import java.util.Scanner;
public class BendingMachineTestWhile{



 public static void main (String [] args)
  {
    String drink;
    int money;
    Scanner kbd = new Scanner (System.in);

System.out.println (" Pick from the following drinks: \n pepsi \n coke \n gatorade");
drink = kbd.nextLine();
while (true){     
  if (drink.equals ("pepsi"))
  {
    System.out.println ("That will be 4 dollars");
    System.out.println ("Enter 4 dollars");
    money = kbd.nextInt();
    if ( money == 4 )
    {
      System.out.println ("Thanks.");
      break;
    }
    else if ( money != 4)
    {
      System.out.println ("You idiot its four dollars");
    }

  }
}

if (drink.equals ("coke"))
{
  System.out.println ("That will be 6 dollars");
  System.out.println ("Enter 6 dollars");
  money = kbd.nextInt();
  while (true){
    if ( money == 6 )
    {
      System.out.println ("Thanks.");
      break;
    }
    else if ( money != 6)
    {
      System.out.println ("You idiot its four dollars");
    }
  }

}
}
}

第二个 if 语句不起作用。如果你们能帮助我,我将不胜感激。

最佳答案

问题是您的 coke 选择代码位于 while 循环之外。因此,它永远不会执行循环执行中的焦炭,甚至不会检查循环执行中的焦炭。

我对您的代码进行了一些格式化,以便更容易阅读。 :)

顺便说一句,您的“可乐”条件代码与百事可乐条件不同。我会将它们更改为基本相同,因为它们应该执行相同的基本操作。

将循环更改为:

while (true){     
    if (drink.equals ("pepsi"))
    {
        System.out.println ("That will be 4 dollars");
        System.out.println ("Enter 4 dollars");
        money = kbd.nextInt();
        if ( money == 4 )
        {
            System.out.println ("Thanks.");
            break;
        }
        else
        {
            System.out.println ("You idiot it's four dollars");
        }
    }
    else if (drink.equals ("coke"))
    {
        System.out.println ("That will be 6 dollars");
        System.out.println ("Enter 6 dollars");
        money = kbd.nextInt();
        if ( money == 6 )
        {
            System.out.println ("Thanks.");
            break;
        }
        else
        {
            System.out.println ("You idiot it's four dollars");
        }

    }
    else {
        System.out.println("You didn't make a valid choice, please choose coke or pepsi");
    }

    // Get another input to continue program, here.
}

您确实应该考虑将变量命名为能够描述其用途的名称。例如,您的 Scanner 应命名为:input。这使得它的作用非常清楚,然后暗示如何根据它的对象来使用它。

关于java - while 循环不适用于两个 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616113/

相关文章:

java - 我真正使用的是哪个 JRE?

java - 如何访问用户的登录用户名并将其存储在常规 java 类中使用的变量中

python - 使用 Python Loop 从 Excel 文件创建多个 .txt 文件

java - 循环输入 if 语句

java - 有没有更简单的方法来编写这个 equalsIgnoreCase 检查链?

java - 从 Control 数组按类型获取 UI 元素?

java - 为什么这个图形循环会卡住我的图形用户界面?

java - Spring Social Facebook - 单个 Facebook 实例

Python for 循环总是使用 else 语句

javascript - enquire.js - 如何在动态创建的寄存器函数中维护变量?