【问题标题】:Is a conditional statement required here?这里需要条件语句吗?
【发布时间】:2021-06-22 06:04:54
【问题描述】:

我正在构建这个程序:

向客户出售鸡蛋的农场对一打鸡蛋收费 3.25 美元,对于不属于一打的单个鸡蛋收取 45 美分。编写一个程序,提示用户输入鸡蛋的数量,然后显示所欠的金额并给出完整的解释。

我在让程序知道什么是一打和不是一打以及如何计算减去一打后剩下的内容时遇到了问题。到目前为止,这就是我所拥有的:

import javax.swing.JOptionPane;
public class Eggs
{
    public static void main(String[] args)
    {
        String orderString;
        final double DOZEN = 3.25;
        final int INDIVIDUAL = 45;
        int order;
        
        orderString = JOptionPane.showInputDialog(null, "How many eggs do you want?", "Order dialog", JOptionPane.INFORMATION_MESSAGE);
        boolean isDozen = (orderstring >= 12);
        
        order = Double.parseDouble(orderString) * DOZEN;
        
        String.out.print("You ordered " + orderString + " eggs.");
        
    }
}

在包含布尔变量之前,我没有得到错误,但在那之后,我得到了。我以为我是用它来创建一个条件语句,但我现在很困惑。

感谢您的协助。

【问题讨论】:

  • Java 不是 JavaScript。
  • 您不能将字符串orderstring 与数字进行比较。您必须先将字符串转换为数字,然后比较结果。此外,您可能希望尽可能多地使用整数。在这个特定程序中这样做的好处之一是整数除法 (/) 和模数 (%) 运算符将帮助您将鸡蛋数量分成几十个并留下单个鸡蛋。
  • 您可能最终需要一个条件,具体取决于您的目标(否则为什么要创建布尔值)。但是您的直接问题已经得到解答here

标签: java boolean boolean-expression date-arithmetic arithmetic-expressions


【解决方案1】:

您正在尝试将 String (orderstring) 与 Integer (12) 进行比较,这是不可能的。

您应该将输入值解析为整数。然后您可以将此orderValue 与整数进行比较:

Integer orderValue = Integer.parseValue(orderstring);
boolean isDozen = (orderValue >= 12);

但你必须处理可能的ParseException 或类似的东西。

【讨论】:

    【解决方案2】:

    我在让程序知道什么是十几个方面遇到了问题

    好吧,让我们来看看你的代码:

    String orderString;
    orderString = JOptionPane.showInputDialog(null, "How many eggs do you want?", "Order dialog", JOptionPane.INFORMATION_MESSAGE);
    boolean isDozen = (orderstring >= 12);
    

    这是行不通的,因为 orderStringString12int。您需要先将字符串解析为 int:

    int order = Integer.parseInt(orderString); //Task: what happens is the user enters "a dozen" and how would you prevent that?
    boolean isDozen = order > 12;
    

    这里需要条件语句吗?

    您不使用它,实际上也不需要它。为什么?您不仅需要订单是否超过一打,还需要实际有多少几十个 - 以及任何额外的个人。

    所以你需要的是:

    int dozens = order / 12; //Task for you: find out why 13/12 == 14/12 etc.
    int indiv = order % 12; //Task: find out why 25 % 12 works and returns 1
    

    然后您可以计算最终价格并根据这些值生成详细说明。

    最后,想想你的这部分代码:

    最终双打 = 3.25; 最终 int 个人 = 45;

    还有

    向客户出售鸡蛋的农场对一打鸡蛋收取 3.25 美元,或对单个鸡蛋收取 45 美分

    如果DOZEN 是一打鸡蛋的价格和美元,那么INDIVIDUAL 代表什么?这里怎么计算?

    我想要达到的目的:不要不必要地混合单位,无论是使用美分还是美元,所以值要么是 32545(美分),要么是 3.25.45(美元) )。虽然您可以使用不同的单位,但这会使其更难使用并且更容易引入错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多