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