所以老师在白板上写的问题是:输入产品名称,数量,价格。计算总金额。如果总金额大于2000折扣是5%,如果总金额大于5000折扣是10%,如果大于10000折扣是20%
我知道你必须做这种格式。
if (cost > 2000)
discount = 0.05;
我会先输入正确的内容,而不是像
String prodName;
int qty, price;
double cost;
double discount;
我知道我放错了但是我认为在执行嵌套if语句之前它的格式如何。我真的需要帮助。我不需要为此给出答案,因为它的勺子喂养到最高水平。我只需要一些指示和指南,以便找出要做的事情。
答案 0 :(得分:1)
首先声明你所做的所有变量:
String prodName="";
int qty, price;
double cost; //your cost will be stored here
double discount =0;
然后进行计算
if (cost > 2000 && cost <= 5000)
discount = 0.05;
else if(cost > 5000 && cost <= 10000){
discount = 0.1;
}else if(cost > 10000){
discount = 0.2;
}
答案 1 :(得分:1)
首先,你需要彻底阅读你的书。显然是this can be a good start。首先了解if-then
的工作原理,然后了解if-then-else
,最后if-then-else if-then-else
。现在让我们分析一下你的问题:
输入产品名称,数量,价格。计算总金额。如果总金额大于2000,则折扣为5%,如果总金额大于5000,则折扣为10%,如果大于10000折扣为20%。
显然,你要设置一个变量,让我们调用它discount
,并检查一些条件。有关说明,如果总金额大于10000 ,那么您将设置discount = 20%
。但是要小心,当总金额 大于10000 时,它还会导致总金额 大于5000或2000 太!那你要分别设置discount = 10%
还是discount = 5%
?不,你不是。
因此,要解决您的问题,如果已经匹配了更高的优先级条件,则不会检查任何其他条件。所以我们将做以下事情:
discount;
total_amount = some Cost you calculated/inputted
if(total_amount > 10000) {
discount = 0.2;
} else if(total_amount > 5000) {
discount = 0.05;
} else if(total_amount > 2000) {
discount = 0.01;
} else {
discount = 0.00; // no discount for you coz total_amount less than or equal to 2000
}
现在发生了什么?如果第一个测试表达式是true
(total_amount > 10000
),它将在其下方的大括号{ }
内执行代码,并且不执行任何其他块。但是如果第一个测试表达式是false
,它会检查第二个测试表达式(total_amount > 5000
)。如果第二个测试表达式是true
,它将在其下方的大括号{ }
内执行语句,并且不会执行其他块。这个过程继续。如果所有测试表达式都是false
,则执行else
内的代码/ s,程序控制跳转到if-else
以下。
当您完全理解if-else
时,您可以通过多种方式解决此问题。祝你好运。
答案 2 :(得分:0)
只需几点,你就要比较一下价格,如果你按照相反的顺序进行比较,你可以这样做:
if (cost > 10000)
discount = 0.2;
else if (cost > 5000)
discount = 0.1;
else if (cost > 2000)
discount = 0.05;
这很方便,因为你没有嵌套if语句而且它仍然是正确的。
答案 3 :(得分:0)
if (cost > 10000)
discount = 0.2;
else if(cost > 5000){
discount = 0.1;
}else if(cost > 2000){
discount = 0.05;
} else {
discount = 0;
}
double total = cost - (cost * discount);
当使用if和else ifs时,如果第一个if语句为true,则执行该代码并且不检查其他ifs。如果第一个if为false,那么如果跟随if,则按照它们出现的顺序检查。如果其中一个为真,那么执行该代码并且不检查其他代码。但是,如果没有,并且您有一个else块,代码将被执行。
答案 4 :(得分:0)
您可以按照问题的顺序进行嵌套,并询问是否更容易理解。我们只是根据需要更新折扣。请注意,其他答案可能更漂亮,但这是一种嵌套方式:
double cost = ...;
double discount = 0.0;
if (cost > 2000)
{
discount = 0.05;
if (cost > 5000)
{
discount = 0.10;
if (cost > 10000)
{
discount = 0.20;
}
}
}
cost = cost - (cost * discount);
您可以向后执行此操作,也可以使用else if
和else
语句执行此操作。
答案 5 :(得分:0)
if (cost > 10000)
discount = 0.2;
else if (cost > 5000)
discount = 0.1;
else if (cost > 2000)
discount = 0.05;
答案 6 :(得分:0)
希望以下代码可以帮助你......
if (cost > 10000)
discount = 0.2;
else if (cost > 5000)
discount = 0.1;
else if (cost > 2000)
discount = 0.05;
else
System.out.println("cost is less than 2000 hence no discount applied");
答案 7 :(得分:0)
在这种情况下,我不认为嵌套if语句是必要的。相反,您可以颠倒if语句的顺序,以便它首先检查cost > 10000
,然后检查cost > 5000
,最后检查cost > 2000
。
另外,如果您提到的净额是折扣后的成本,那么您可以在if语句后进行简单的计算。它看起来像这样:
double discount = 0;
if (cost > 10000){
discount = 0.2;
}
else if(cost > 5000){
//similar to above, won't spoon-feed this
}
else if(cost > 2000){
//similar to above, won't spoon-feed this
}
double netAmount = cost * (1 - discount);
答案 8 :(得分:0)
我知道您要求嵌套if
语句,但您可以使用ternary
运算符严重缩短此问题的解决方案,尤其是因为这主要用于将值赋给{{1} }。可能比你想要的要复杂得多,但可以工作:
discount
简要说明
这就像嵌套的double cost, netAmount;
//get cost
double discount = cost > 10000 ? 0.2 : cost > 5000 ? 0.1 : cost > 2000 ? 0.05 : 0;
netAmount = discount * cost;
语句一样,但如果写得不那么简单,那就更简洁了。每个布尔表达式,例如
if
根据所有布尔表达式,被评估为或者是真或假。如果表达式返回true,则分配cost > 10000
运算符ternary
之后的值。如果表达式返回false,则分配?
之后的值。在这种情况下,如果cost大于10000,则分配值0.2。如果cost小于10000,我们想要评估另一个布尔表达式,所以我们嵌套另一个布尔表达式,如下所示:
:
最终cost > 10000 ? 0.2 : cost < 5000...
表示如果所有其他表达式计算为false,将分配什么值,就像:
块中的终止else
语句一样。