Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 输出不正确的总输出_Java - Fatal编程技术网

Java 输出不正确的总输出

Java 输出不正确的总输出,java,Java,如果您输入,我当前的程序将订购比萨饼 moho 哪种是中等比萨、橄榄、火腿、橄榄的价格输出应为: Medium pizza with,olives,ham,olives,£7.00 然而,我得到: Your order is: Medium pizza with,olives,ham,olives,£6.999999999999999 如何使其打印正确的输出?我已经通读了代码,但似乎不明白为什么 public class pizza { public static void

如果您输入,我当前的程序将订购比萨饼

moho
哪种是中等比萨、橄榄、火腿、橄榄的价格输出应为:

Medium pizza with,olives,ham,olives,£7.00
然而,我得到:

Your order is: Medium pizza with,olives,ham,olives,£6.999999999999999
如何使其打印正确的输出?我已经通读了代码,但似乎不明白为什么

    public class pizza {
    public static void main(String[] args){
        pizzaServiceA();
    }
    public static void pizzaServiceA(){
        Scanner input = new Scanner(System.in);
        double total = 0;
        System.out.println("Enter order:");
        String order = input.next();
        String pizza = "Your order is: ";

        if (order.equals("quit")){
            System.out.println("Program exiting.");
            System.exit(0);
        }

        boolean size = false;
        for (int x = 0; x < order.length(); x++){
        if (order.charAt(0) == 'm' || order.charAt(0) == 'l'){
            if (order.charAt(x) == 'm'){
                total +=4.00;
                pizza += "Medium pizza with,";
                size = true;
            }
            else if (order.charAt(x) == 'l'){
                total +=5.00;
                pizza +="Large pizza with,";
            }
            else if (order.charAt(x) == 'h'){
                pizza +="ham,";
                if (size) total += 1.40; 
                else total +=2.10;
            }
            else if (order.charAt(x)== 'o'){
                pizza +="olives,";
                if(size) total +=0.80;
                else total +=1.20;
            }
            else if (order.charAt(x)=='p'){
                pizza+="pineapple,";
                if(size) total +=1;
                else total+=1.50;
            }
            else if (order.charAt(x)=='s'){
                pizza+="spinach,";
                if(size) total +=0.80;
                else total+=1.20;
            }
            else if (order.charAt(x)=='m'){
                pizza +="mozarella,";
                if(size) total =+ 1;
                else total+=1.50;
            }
        }
        else {
            System.out.println("Your first character must be m(medium) or l(large)");
        }
      }
        System.out.println(pizza +"£" + total + "0");
    }
}
公共级比萨饼{
公共静态void main(字符串[]args){
比萨饼a();
}
公共静态无效pizzaServiceA(){
扫描仪输入=新扫描仪(System.in);
双倍合计=0;
System.out.println(“输入订单:”);
字符串顺序=input.next();
String pizza=“您的订单是:”;
if(order.equals(“退出”)){
System.out.println(“程序退出”);
系统出口(0);
}
布尔大小=false;
对于(int x=0;x

注意:我知道我可能没有以一种有效的方式编写这段代码,因为我只是Java的初学者,我正在努力学习

这是使用二进制浮点类型表示精确货币值的陷阱的缩影

为了过上轻松的生活(特别是考虑到你是初学者),使用整型(例如
long
)并使用便士


有关更多详细信息,请参见“如果您想尝试脏衣服”:

double total = 651.5176515121351;    
total = Math.round(total * 100);
total = total /100;
有很多选择:

String result = String.format("%.2f", total );

有很多方法可以进行取整等。不过,请看一下使用数学库中的BigDecimal的方法。希望这有帮助

例如。。src:-欢迎营救

import java.text.*;
import java.math.*;

public class addCurrency{
   public static void main(String[] args) {
      BigDecimal val1 = new BigDecimal("12.52");
      BigDecimal val2 = new BigDecimal("17.21");
      BigDecimal tot = val1.add(val2);
      System.out.println(NumberFormat.getCurrencyInstance().format(tot));
   }
}
public class fungsi_umur{
乌穆尔(塔欣拉希尔市中心、塔汉斯卡朗市中心){
int umur=塔汉斯卡朗-塔汉拉希尔;
系统输出打印(“Masukan umur:”);
系统输出打印(“Masukan nama:”);
如果(第12号城市轨道和第18号城市轨道){
System.out.println(“Umur Saya=“+Umur”);
系统输出打印(Saya Adalah Dewasa);umur(tahunlahir,Tahunsakarang);
系统输出打印(“umur>18”);umur(tahunlahir,Tahunsakarang);
}
}
公共静态void main(字符串[]args){
}
}

@ΦXocę웃Пepeúpaツ 感谢您的宝贵意见:)如果您想强制结果始终为$?.00,这是一个很好的解决方案。如果价格变为5.83美元,则四舍五入为6.00美元。所以我认为,如果你的价格变为小数,这不是所有时间的解决方案。@MichaelSeltene nope 5.83*100=583轮583=583,然后583/100=5.83,这样就行了。
public class fungsi_umur {

    public static void umur(int tahunlahir, int tahunsekarang) {

        int umur = tahunsekarang - tahunlahir;
        System.out.print("Masukan umur :");
        System.out.print("Masukan nama :");

        if (umur <= 12){
            System.out.print("Umur Saya = "+umur);
            System.out.print("Saya Adalah Anak Anak");
            System.out.print("umur<= 12 ");umur(tahunlahir,tahunsekarang);


        }else if (umur > 12 && umur <= 18){
            System.out.println("Umur Saya = "+umur);
            System.out.println("Saya Adalah Remaja");umur(tahunlahir,tahunsekarang);
            System.out.print("umur > 12 && umur <= 18");umur(tahunlahir,tahunsekarang);

        }else if (umur > 18){
            System.out.println("Umur Saya = "+umur);
            System.out.println("Saya Adalah Dewasa");umur(tahunlahir,tahunsekarang);
            System.out.print("umur > 18");umur(tahunlahir,tahunsekarang);
        }
    }
    public static void main(String[] args) {

    }
}