[英]Unexpected result in if else statement
我是一個初學者,因此得到這個結果是因為我的if if陳述令我震驚。 除了當QtyCalc變量> = 100時的條件之外,其他所有東西都可以正常工作。Finprice變量被列為光盤變量,我不知道為什么。 救命?
import javax.swing.JOptionPane;
public class SoftwareSales {
public static void main(String[] args) {
final int price = 99;
String Qty;
double QtyCalc, preprice, Finprice, disc;
Qty = JOptionPane.showInputDialog(null, "How many packages will you buy?");
QtyCalc = Double.parseDouble(Qty);
preprice = QtyCalc * price;
if (QtyCalc >= 100) {
disc = (preprice * (0.5));
Finprice = (preprice - disc);
JOptionPane.showMessageDialog(null, "Your discount is: " + disc + ".\n" + "Your final price is: " + Finprice + ". ");
} else if (QtyCalc >= 50 && QtyCalc <= 99) {
disc = (preprice * 0.4);
Finprice = (preprice - disc);
JOptionPane.showMessageDialog(null, "Your discount is: " + disc + ".\n" + "Your final price is: " + Finprice + ". ");
} else if (QtyCalc >= 20 && QtyCalc <= 49) {
disc = (preprice * 0.3);
Finprice = (preprice - disc);
JOptionPane.showMessageDialog(null, "Your discount is: " + disc + ".\n" + "Your final price is: " + Finprice + ". ");
} else if (QtyCalc >= 10 && QtyCalc <= 19) {
disc = (preprice * 0.2);
Finprice = (preprice - disc);
JOptionPane.showMessageDialog(null, "Your discount is: " + disc + ".\n" + "Your final price is: " + Finprice + ". ");
} else if (QtyCalc < 10 && QtyCalc >= 1) {
disc = 0;
Finprice = 0;
JOptionPane.showMessageDialog(null, "Sorry, there is no discount for purchases less than 10." + " Your price is: " + preprice);
} else {
JOptionPane.showMessageDialog(null, "You have entered an invalid number.");
}
disc = 0;
Finprice = 0;
System.exit(0);
}
}
當數量> = 100時,最終價格等於折扣,因為折扣為50%...請查看您發布的代碼。 尤其是:
if (QtyCalc >= 100) {
disc = (preprice * (0.5));
Finprice = (preprice - disc);
JOptionPane.showMessageDialog(null, "Your discount is: " + disc + ".\n" + "Your final price is: " + Finprice + ". ");
}
沒有奇怪的行為,只有簡單的數學運算:
disc = (preprice * (0.5));
Finprice = (preprice - disc);
您還應該考慮消除冗余代碼:
import javax.swing.JOptionPane;
public class SoftwareSales {
public static void main(String[] args) {
final int PRICE = 99;
String qty;
double qtyCalc, preprice, finprice, disc;
disc = 0;
qtyCalc = 0;
boolean invalid = false;
do{
invalid = false;
qty = JOptionPane.showInputDialog(null, "How many packages will you buy?");
if (qty == null){
return;
}
try{
qtyCalc = Double.parseDouble(qty);
}catch(NumberFormatException e){
invalid = true;
}
}while(invalid);
preprice = qtyCalc * PRICE;
if (qtyCalc >= 100) {
disc = (preprice * (0.5));
} else if (qtyCalc >= 50 && qtyCalc <= 99) {
disc = (preprice * 0.4);
} else if (qtyCalc >= 20 && qtyCalc <= 49) {
disc = (preprice * 0.3);
} else if (qtyCalc >= 10 && qtyCalc <= 19) {
disc = (preprice * 0.2);
} else if (qtyCalc < 10 && qtyCalc >= 1) {
disc = 0;
finprice = 0;
JOptionPane.showMessageDialog(null, "Sorry, there is no discount for purchases less than 10. Your price is: " + preprice);
return;
} else {
JOptionPane.showMessageDialog(null, "You have entered an invalid number.");
return;
}
finprice = (preprice - disc);
JOptionPane.showMessageDialog(null, String.format("Your discount is: %.2f.\nYour final price is: %.2f. ",disc,finprice));
}
}
還請記住變量的Java約定:始終以小寫開頭。 總決賽大寫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.