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

Java瓷砖用量计算程序异常排查:结果不符预期求修正方案

瓷砖用量计算程序错误排查与修正

原代码核心问题拆解

  • 单位转换错误:瓷砖尺寸从mm转cm时,正确转换应为除以10(1mm=0.1cm),原代码误用除以100,导致瓷砖尺寸被缩小10倍,所有计算完全失真。
  • 瓷砖数量逻辑错误:
    • 用循环累加1的方式计算所需长度完全不合理,无法正确计算瓷砖+砖缝的总占用空间。
    • 错误地将长度、宽度方向的瓷砖数相加,实际总数量应为两者的乘积(行数×列数)。
  • 砖缝计算错误:长度/宽度方向的砖缝数量是瓷砖数-1(比如2块砖仅1条缝),原代码按瓷砖数计算缝数,多算了一条缝。
  • 取整方式错误:因为禁止切割复用,哪怕剩余空间不足一块砖,也需要额外增加一块,必须用向上取整,而非普通的四舍五入。

修正后的代码

import java.util.Scanner;

public class Tiles {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 输入并完成单位统一(全部转为cm)
        System.out.print("tile width (mm):");
        double tileWidthCm = scanner.nextDouble() / 10.0; // mm转cm:除以10
        System.out.print("tile length (mm): ");
        double tileLengthCm = scanner.nextDouble() / 10.0;
        System.out.print("floor width (cm): ");
        double floorWidthCm = scanner.nextDouble();
        System.out.print("floor length (cm): ");
        double floorLengthCm = scanner.nextDouble();
        System.out.print("joint spacing (mm): ");
        double jointSpacingCm = scanner.nextDouble() / 10.0; // mm转cm:除以10

        // 计算长度方向所需瓷砖数:每块砖+缝的总长度为 tileLengthCm + jointSpacingCm
        // 最后一块砖后面不需要缝,公式变形后向上取整得到最小瓷砖数
        double lengthSideTiles = Math.ceil((floorLengthCm + jointSpacingCm) / (tileLengthCm + jointSpacingCm));

        // 同理计算宽度方向所需瓷砖数
        double widthSideTiles = Math.ceil((floorWidthCm + jointSpacingCm) / (tileWidthCm + jointSpacingCm));

        // 总瓷砖数为两个方向的乘积,转为整数
        int totalTiles = (int) (lengthSideTiles * widthSideTiles);

        System.out.println("tiles required: " + totalTiles);
        scanner.close();
    }
}

修正逻辑说明

  1. 单位统一:所有尺寸统一转换为cm,避免计算中出现单位混乱。
  2. 瓷砖数量计算:通过数学公式推导所需瓷砖数,避免循环的低效与错误:
    • 对于长度方向,每块砖加一条缝的总宽度是瓷砖长度+砖缝宽度,最后一块砖无需额外缝,因此公式变形为(地面长度+砖缝宽度)/(瓷砖长度+砖缝宽度),再向上取整得到最小瓷砖数。
  3. 总数量计算:长度方向瓷砖数 × 宽度方向瓷砖数,得到最终需要的总瓷砖数。
  4. 向上取整:使用Math.ceil()确保哪怕剩余极小空间,也会多算一块砖,符合“不切割复用”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:05:14