Java小程序配送计算器,如果低于100美元,不确定如何添加免费配送

Java小程序配送计算器,如果低于100美元,不确定如何添加免费配送,java,Java,我正在做课堂上的编码作业。这是一个虚拟蜡烛网站的基本运输计算器。客户将输入他们的销售总额,然后选择他们想要的发货级别,并显示成本。选项包括过夜、优先或标准。一夜之间,优先权是固定成本,所以这很容易。但如果订单100美元,则标准价格为0美元 我已经为订单总数创建了一个文本字段,以及过夜、优先级和标准的复选框。还有一个不小的奇迹(我在这门课上很差劲),我实际上在这里有一个功能强大的applet,只是我不知道如何解释订单总额>100美元==免费送货 我觉得我需要创建一个案例#4,其中shipping=

我正在做课堂上的编码作业。这是一个虚拟蜡烛网站的基本运输计算器。客户将输入他们的销售总额,然后选择他们想要的发货级别,并显示成本。选项包括过夜、优先或标准。一夜之间,优先权是固定成本,所以这很容易。但如果订单<100美元,则标准价格为7.95美元;如果订单>100美元,则标准价格为0美元

我已经为订单总数创建了一个文本字段,以及过夜、优先级和标准的复选框。还有一个不小的奇迹(我在这门课上很差劲),我实际上在这里有一个功能强大的applet,只是我不知道如何解释订单总额>100美元==免费送货

我觉得我需要创建一个案例#4,其中shipping=total+0,但我不确定如何生成代码4,或者在哪里添加true/false或if..else语句来实现这一点

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.text.DecimalFormat;

public class ShippingApplet extends Applet implements ItemListener
{
int shipSpeed;
double dollars, answer;

Label headLabel = new Label ("CandleLine--Candles Online");


Label promptLabel = new Label("Please enter the total dollar amount of your order:");
    TextField totalField = new TextField(20);

Label hiddenLabel = new Label("");

Label codeLabel = new Label ("Please choose your method of shipping:");

CheckboxGroup codeGroup = new CheckboxGroup();
        Checkbox overnightBox = new Checkbox("Priority(Overnight)",false,codeGroup);
        Checkbox expressBox = new Checkbox("Express (2 business days)",false,codeGroup);
        Checkbox standardBox = new Checkbox("Standard (3 to 7 business days)",false,codeGroup);
Checkbox hiddenBox = new Checkbox("",true,codeGroup);

Label outputLabel=new Label("We guarantee on time delivery, or your money back.");


public void init()
{
    setBackground(Color.cyan);
    setForeground(Color.black);
    add(headLabel);
    add(promptLabel);
    add(totalField);
    totalField.requestFocus();
    totalField.setForeground(Color.black);
    add(hiddenLabel);
    add(codeLabel);
    add(overnightBox);
    overnightBox.addItemListener(this);
    add(expressBox);
    expressBox.addItemListener(this);
    add(standardBox);
    standardBox.addItemListener(this);
    add(outputLabel);
}

public void itemStateChanged(ItemEvent choice)
{

    try
    {
        dollars = getTotal();
        shipSpeed = getCode();
        answer = getShip(dollars,shipSpeed);
        output(answer, dollars);
    }

    catch(NumberFormatException e)
    {
        outputLabel.setText("You must enter a dollar amount greater than zero.");
        hiddenBox.setState(true);
        totalField.setText("");
        totalField.requestFocus();
    }
}
        public double getTotal()
            {
                double total = Double.parseDouble(totalField.getText());

                if (total <= 0) throw new NumberFormatException();

    return total;
}

    public int getCode()
    {
        int code = 0;
        if (overnightBox.getState()) code = 1;
        else
            if (expressBox.getState()) code = 2;
            else
                if (standardBox.getState()) code = 3;
        return code;
    }

    public double getShip(double total, int code)
        {
            double shipping = 0.0;
            switch(code)
            {
                case 1:
                    shipping = total + 16.95;
                    break;

                case 2:
                    shipping = total + 13.95;
                    break;

                case 3:
                    shipping = total + 7.95;
                    break;
            }
    return shipping;
}
     public void output(double shipping, double total)
         {
             DecimalFormat twoDigits = new DecimalFormat("$#,000.00");
             outputLabel.setText("Your order of " + twoDigits.format(total) + " plus shipping totals to:  " + twoDigits.format(shipping));
 }
import java.awt.*;
导入java.applet.*;
导入java.awt.event.*;
导入java.text.DecimalFormat;
公共类ShippingApplet扩展小程序实现ItemListener
{
国际船速;
两美元,回答;
标签海岬贝尔=新标签(“烛光线——在线蜡烛”);
Label promptLabel=新标签(“请输入订单的总金额:”);
TextField totalField=新的TextField(20);
标签hiddenLabel=新标签(“”);
Label codeLabel=新标签(“请选择您的运输方式:”);
CheckboxGroup codeGroup=新的CheckboxGroup();
复选框overnightBox=新复选框(“优先级(夜间)”,false,代码组);
复选框expressBox=新复选框(“快速(2个工作日)”,假,代码组);
复选框standardBox=新复选框(“标准(3至7个工作日)”,假,代码组);
复选框hiddenBox=新复选框(“,true,代码组);
Label outputLabel=新标签(“我们保证按时交货,否则退款”);
公共void init()
{
挫折背景(颜色:青色);
设置前景(颜色为黑色);
加(海岬);
添加(即时标签);
添加(totalField);
totalField.requestFocus();
设置前景(颜色为黑色);
添加(隐藏标签);
添加(代码标签);
添加(overnightBox);
overnightBox.addItemListener(此);
添加(expressBox);
addItemListener(此);
添加(标准框);
standardBox.addItemListener(此);
添加(输出标签);
}
公共无效itemStateChanged(ItemEvent选项)
{
尝试
{
美元=getTotal();
shipSpeed=getCode();
答案=getShip(美元,船速);
产出(单位:美元);
}
捕获(数字格式)
{
setText(“必须输入大于零的美元金额”);
hiddenBox.setState(真);
totalField.setText(“”);
totalField.requestFocus();
}
}
公共双getTotal()
{
double-total=double.parseDouble(totalField.getText());

if(total您可以在选项3(标准选项)的开关盒中插入if语句。如果总数大于或等于$100,您只需将shipping设置为total,否则,您需要计算并添加$7.95

case 3:
    if(total >= 100.0) {
        shipping = total;
    } else {
        shipping = total + 7.95;
    }
    break;

或者我个人会在这种情况下使用“提前返回”,因此我会立即返回计算结果,以提高我认为的可读性:

public double getShip(double total, int code) {
    switch(code) {
        case 1: // Overnight Box
            return total + 16.95;
        case 2: // Express Box
            return total + 13.95;
        case 3: //Standard Box
            if(total >= 100.0) { // No shipping for orders >= $100
                return total;
            }

            return total + 7.95;
    }
}

您可以找到更多有关提前退货以及何时/是否应该使用这些退货的信息。

不要在
getShip
中将发货添加到总额中,只需根据代码返回发货成本,然后让调用者根据总额决定是否需要发货applied@MadProgrammer这也是一个很好的改变。或者改变方法更具描述性,可能是“addShippingCost”,并提供一个快速的javadoc解释。@Kage0x3B我通常关心的是“该方法”应该做什么。就个人而言,我更喜欢它只是计算发货-一项工作,一项责任-一个“申请折扣”方法可能是做出最终决定的更好选择,但这只是我的一个选择。我很感激,这很好。我本应该能够找出最有可能的答案,但我的大脑在试图在一个5节课的夏季学期中迎头赶上。