You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java水果购买程序数量计算错误问题求助

Java水果商城计算精度问题修复方案

问题原因

程序计算错误的核心是Java整数除法会自动截断小数部分。以苹果的场景为例:

  • 代码中1000/appleprice是两个整数相除,1000/120的实际值是8.333...,但整数除法会直接截断为8
  • 后续乘以购买金额60,得到8*60=480,和预期的500不符

修复方案

将除法运算中的常量改为浮点数(如1000改为1000.0,12改为12.0),强制触发浮点数除法,保留计算精度。

修复后的关键代码片段

以苹果和香蕉的计算为例,其他水果的计算逻辑同理修改:

// 苹果计算修复:用1000.0替代1000,触发浮点数除法
double applequantity = 1000.0 / appleprice * applebuyamount;

// 香蕉计算修复:用12.0替代12,触发浮点数除法
double bananaquantity = 12.0 / bananaprice * bananabuyamount;

完整修复代码

import java.util.Scanner;

public class FruitShop {
    public static void main(String[] args) {
        int appleprice = 120;
        int bananaprice = 100;
        int orangeprice = 80;
        int mangoprice = 110;
        int grapeprice = 140;
        int lemonprice = 60;
        
        System.out.println("...............................Welcome to Ali Fruit Shop.........................");
        
        System.out.println("\n \n These items are available in our shop :");
        System.out.println("\n \n1.Apples");
        System.out.println("2.Banana");
        System.out.println("3.Orange ");
        System.out.println("4.Mango");
        System.out.println("5.Grapes");
        System.out.println("6.Lemon");
        
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("\n \nEnter Fruit number to buy this fruit :");
        int fruitnuminput = scanner.nextInt();
        
        switch(fruitnuminput) {
            case 1: 
                System.out.println("Apples : Rs."+appleprice+" KG");
                System.out.println("\n \n Enter cash amount to buy Apple : ");
                int applebuyamount = scanner.nextInt();
                double applequantity = 1000.0 / appleprice * applebuyamount;
                System.out.println("You will get :");
                System.out.println("Apples : "+applequantity+"Gram");
                break;
                
            case 2: 
                System.out.println("Banana : Rs."+bananaprice+" Dozen");
                System.out.println("\n \n Enter cash amount to buy Banana : ");
                int bananabuyamount = scanner.nextInt();
                double bananaquantity = 12.0 / bananaprice * bananabuyamount;
                System.out.println("You will get :");
                System.out.println("Banana : "+bananaquantity);
                break;
                
            case 3: 
                System.out.println("Orange : Rs."+orangeprice+" KG");
                System.out.println("\n \n Enter cash amount to buy Orange : ");
                int orangebuyamount = scanner.nextInt();
                double orangequantity = 1000.0 / orangeprice * orangebuyamount;
                System.out.println("You will get :");
                System.out.println("Orange : "+orangequantity+"Gram");
                break;
                
            case 4: 
                System.out.println("Mango : Rs."+mangoprice+" KG");
                System.out.println("\n \n Enter cash amount to buy Mango : ");
                int mangobuyamount = scanner.nextInt();
                double mangoquantity = 1000.0 / mangoprice * mangobuyamount;
                System.out.println("You will get :");
                System.out.println("Mango : "+mangoquantity+"Gram");
                break;
                
            case 5: 
                System.out.println("Grapes : Rs."+grapeprice+" KG");
                System.out.println("\n \n Enter cash amount to buy Grapes : ");
                int grapebuyamount = scanner.nextInt();
                double grapequantity = 1000.0 / grapeprice * grapebuyamount;
                System.out.println("You will get :");
                System.out.println("Grapes : "+grapequantity+"Gram");
                break;
                
            case 6: 
                System.out.println("Lemon : Rs."+lemonprice+" KG");
                System.out.println("\n \n Enter cash amount to buy Lemon : ");
                int lemonbuyamount = scanner.nextInt();
                double lemonquantity = 1000.0 / lemonprice * lemonbuyamount;
                System.out.println("You will get :");
                System.out.println("Lemon : "+lemonquantity+"Gram");
                break;
                
            default:  
                System.out.println("Invalid fruit number!");
        }
        scanner.close();
    }
}

验证效果

输入苹果购买金额60时,计算式变为1000.0/120*60 = 8.333...*60 = 500,完全符合预期结果。

内容的提问来源于stack exchange,提问作者Ali Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:39:17