Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java if-else语句中出现意外结果_Java_If Statement_Joptionpane - Fatal编程技术网

Java if-else语句中出现意外结果

Java if-else语句中出现意外结果,java,if-statement,joptionpane,Java,If Statement,Joptionpane,我是一个初学者,所以我得到的这个结果是因为我的if-else语句的一个条件让我大吃一惊。除QtyCalc变量>=100的情况外,其他情况均正常工作。Finprice变量被列为disc变量,我不知道为什么。帮忙 import javax.swing.JOptionPane; public class SoftwareSales { public static void main(String[] args) { final int price = 99; S

我是一个初学者,所以我得到的这个结果是因为我的if-else语句的一个条件让我大吃一惊。除QtyCalc变量>=100的情况外,其他情况均正常工作。Finprice变量被列为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;

        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);
    }
}
import javax.swing.JOptionPane;
公共类软件销售{
公共静态void main(字符串[]args){
最终整数价格=99;
字符串数量;
双QtyCalc、Prepice、Finprice、disc;
Qty=JOptionPane.showInputDialog(null,“您将购买多少个软件包?”);
QtyCalc=Double.parseDouble(数量);
预定价=QtyCalc*价格;
如果(QtyCalc>=100){
圆盘=(预冰*(0.5));
Finprice=(预冰-光盘);
showMessageDialog(null,“您的折扣是:“+disc+”\n“+”您的最终价格是:“+Finprice+”);
}否则如果(QtyCalc>=50&&QtyCalc=20&&QtyCalc=10&&QtyCalc=1){
disc=0;
Finprice=0;
showMessageDialog(null,“对不起,购买少于10件商品没有折扣。”+“您的价格是:”+prepice);
}否则{
showMessageDialog(null,“您输入了一个无效的数字”);
}
disc=0;
Finprice=0;
系统出口(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));

    }
}
import javax.swing.JOptionPane;
公共类软件销售{
公共静态void main(字符串[]args){
最终整数价格=99;
字符串数量;
双qtyCalc、Prepice、finprice、disc;
disc=0;
qtyCalc=0;
布尔无效=假;
做{
无效=错误;
qty=JOptionPane.showInputDialog(null,“您将购买多少个软件包?”);
如果(数量=空){
返回;
}
试一试{
qtyCalc=Double.parseDouble(数量);
}捕获(数字格式){
无效=真;
}
}而(无效),;
预定价=qtyCalc*价格;
如果(qtyCalc>=100){
圆盘=(预冰*(0.5));
}否则如果(qtyCalc>=50&&qtyCalc=20&&qtyCalc=10&&qtyCalc=1){
disc=0;
finprice=0;
showMessageDialog(空,“对不起,购买少于10件商品没有折扣。您的价格是:”+prepice);
返回;
}否则{
showMessageDialog(null,“您输入了一个无效的数字”);
返回;
}
finprice=(预冰-光盘);
JOptionPane.showMessageDialog(null,String.format(“您的折扣是:%.2f.\n您的最终价格是:%.2f.”,disc,finprice));
}
}
还要记住变量的java约定:始终以小写开头。
大写字母中的韵母也同样

您正在使
光盘
等于
prepice
的一半,而
Finprice
等于另一半,因此它们是相等的。怎么了?我的结论是我应该更经常地远离电脑,喝点咖啡。我完全没有注意到(拍了拍他的额头)。谢谢大家指出这一点,请不要对此笑得太多:)啊,我盯着这个屏幕看太久了,没有考虑正确的事情。是不是。。“毫无疑问是个愚蠢的问题”规则在这里算什么?(我现在就躲在角落里……)谢谢!:)我知道这种感觉。相信我,你并不孤单;)感谢您的建议和编辑的代码!我对Java非常陌生,所以我学到的大部分知识都是多余的。我真的很感谢您的帮助。好的,因为您是java编程新手,代码现在采用java命名约定,冗余更少。我还添加了java字符串格式,这是一个很酷的特性;)