对于含糊不清的标题道歉,但很难用一句话来解释我想要的东西。我会尽我所能让你知道我想要做什么。 我正在写一个简单的程序,它将返回披萨的订单,不含税的比萨饼的价格和含税的比萨饼的价格。 这是代码:
var orderCount = 0;
function takeOrder (topping, crustType) {
console.log('Order: ' + crustType + ' pizza topped with ' + topping);
orderCount = orderCount + 1;
}
function getSubTotal (itemCount){
return itemCount * 7.5;
}
function getTax() {
return getSubTotal(orderCount) * (0.06);
}
function getTotal() {
return getTax() + getSubTotal(orderCount);
}
takeOrder('bacon', 'thin');
console.log(getSubTotal(orderCount));
console.log(getTotal());
takeOrder('sausages', 'thick');
console.log(getSubTotal(orderCount));
console.log(getTotal());
takeOrder('olives', 'medium');
console.log(getSubTotal(orderCount));
console.log(getTotal());
正如您所看到的,无论顶部和外壳,披萨的价格总是相同的。 它总是7.5。 但现在我想制作三种不同的配料(如前所述):培根,香肠和不同价格的橄榄。 这意味着披萨的价格应该根据披萨的顶部使用而改变。 我尝试了这段代码,但它不起作用:
var orderCount = 0;
function takeOrder (topping, crustType) {
console.log('Order: ' + crustType + ' pizza topped with ' + topping);
orderCount = orderCount + 1;
}
function getSubTotal (itemCount){
if (topping === 'bacon') {
return itemCount * 7.5;
}
else if (topping === 'sausages'){
return itemCount * 6;
}
else if (topping === 'olives'){
return itemCount * 5.5;
}
else {
return ('Topping not available.');
}
}
function getTax() {
return getSubTotal(orderCount) * (0.06);
}
function getTotal() {
return getTax() + getSubTotal(orderCount);
}
takeOrder('bacon', 'thin');
console.log(getSubTotal(orderCount));
console.log(getTotal());
takeOrder('sausages', 'thick');
console.log(getSubTotal(orderCount));
console.log(getTotal());
takeOrder('olives', 'medium');
console.log(getSubTotal(orderCount));
console.log(getTotal());
我想为crustType做同样的事情(根据地壳的类型改变价格),但是现在我只想弄清楚浇头。 如果有人可以解释我做错了什么,我将不胜感激,因为我不熟悉JavaScript。
谢谢
答案 0 :(得分:2)
你必须保存顶部。
var orderCount = 0;
var topping;
function takeOrder (my_topping , crustType) {
console.log('Order: ' + crustType + ' pizza topped with ' + topping);
orderCount = orderCount + 1;
topping = my_topping ;
}
function getSubTotal (itemCount){
if (topping === 'bacon') {
return itemCount * 7.5;
}
else if (topping === 'sausages'){
return itemCount * 6;
}
else if (topping === 'olives'){
return itemCount * 5.5;
}
else {
return ('Topping not available.');
}
}
function getTax() {
return getSubTotal(orderCount) * (0.06);
}
function getTotal() {
return getTax() + getSubTotal(orderCount);
}
takeOrder('bacon', 'thin');
console.log(getSubTotal(orderCount));
console.log(getTotal());
takeOrder('sausages', 'thick');
console.log(getSubTotal(orderCount));
console.log(getTotal());
takeOrder('olives', 'medium');
console.log(getSubTotal(orderCount));
console.log(getTotal());
答案 1 :(得分:1)
当您致电@Override
public void run() {
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = inputStream.read(buffer);
//Received text is here
String text = new String(buffer, 0, bytes);
Log.d(TAG, text);
} catch (IOException e) {
e.printStackTrace();
break;
}
}
super.run();
}
时,您正在传递顶部信息,但您没有将其存储在任何地方。
因此,当您致电takeOrder
时,发现变量getSubTotal
未定义,您必须获得topping
。
您需要声明变量
Uncaught ReferenceError
就像var topping, crust;
一样。所以看起来应该是这样的:
orderCount
此外,由于在调用var orderCount = 0,
topping, crust;
函数时需要将值存储到它们中,因此需要修改如下函数:
takeOrder
然后它应该工作。
答案 2 :(得分:1)
如上所述,topping
是未定义的变量。
另一个问题是:
takeOrder('bacon', 'thin');
console.log(getSubTotal(orderCount)); // <<<<
console.log(getTotal());
您将特定浇头的价格乘以所有订购的比萨饼的总量,无论其浇头如何。因此,如果您订购了三个培根比萨饼和一个橄榄披萨,那么当您将橄榄的价格乘以1时,您将橄榄的价格乘以4(比萨饼的总数)。
您可以做的是将配料的价格存储在对象中,并保留每次下订单时添加的税前子总数。然后,当您调用getTax和getTotal时,这些函数将使用该运行子总计来计算其输出的值。
var menuItems = {
bacon : 7.5,
sausages : 6,
olives : 5.5
}
var subTotal = 0;
function takeOrder (topping, crustType) {
console.log('Order: ' + crustType + ' pizza topped with ' + topping);
subTotal += menuItems[topping];
}
function getSubTotal() {
return subTotal
}
function getTax() {
return getSubTotal() * (0.06);
}
function getTotal() {
return getTax() + getSubTotal();
}
takeOrder('bacon', 'thin');
console.log(getSubTotal());
console.log(getTotal());
takeOrder('sausages', 'thick');
console.log(getSubTotal());
console.log(getTotal());
takeOrder('olives', 'medium');
console.log(getSubTotal());
console.log(getTotal());