package dikuai; import java.util.Locale; /** * 割草宽度计算工具类 * 用于根据割刀宽度计算实际割草宽度 */ public class Gecaokuanjisuan { /** * 根据割刀宽度计算割草宽度 * * 计算方法:割草宽度 = 割刀宽度 × 0.85(85%覆盖率) * 这是考虑到实际作业时,相邻割草路径之间会有一定的重叠,以确保全覆盖 * * @param bladeWidthMeters 割刀宽度,单位:米 * @return 割草宽度,单位:厘米,保留两位小数。如果输入值无效(小于等于0),返回0.0 * * 使用示例: * double bladeWidth = 0.50; // 割刀宽度0.5米 * double mowingWidth = Gecaokuanjisuan.calculateMowingWidth(bladeWidth); * // 结果:mowingWidth = 42.50(厘米) */ public static double calculateMowingWidth(double bladeWidthMeters) { if (bladeWidthMeters <= 0) { return 0.0; } // 计算割草宽度:割草宽度 = 割刀宽度 * 0.85(85%覆盖率) double mowingWidthMeters = bladeWidthMeters * 0.85; double mowingWidthCm = mowingWidthMeters * 100.0; // 保留两位小数(四舍五入) return Math.round(mowingWidthCm * 100.0) / 100.0; } /** * 根据割刀宽度计算割草宽度(返回格式化字符串) * * @param bladeWidthMeters 割刀宽度,单位:米 * @return 割草宽度字符串,单位:厘米,保留两位小数。如果输入值无效,返回空字符串 * * 使用示例: * double bladeWidth = 0.50; // 割刀宽度0.5米 * String mowingWidthStr = Gecaokuanjisuan.calculateMowingWidthString(bladeWidth); * // 结果:mowingWidthStr = "42.50" */ public static String calculateMowingWidthString(double bladeWidthMeters) { double mowingWidthCm = calculateMowingWidth(bladeWidthMeters); if (mowingWidthCm <= 0) { return ""; } return String.format(Locale.US, "%.2f", mowingWidthCm); } /** * 根据割刀宽度字符串计算割草宽度(返回格式化字符串) * * @param bladeWidthStr 割刀宽度字符串,单位:米 * @return 割草宽度字符串,单位:厘米,保留两位小数。如果输入值无效或无法解析,返回空字符串 * * 使用示例: * String bladeWidthStr = "0.50"; // 割刀宽度0.5米 * String mowingWidthStr = Gecaokuanjisuan.calculateMowingWidthFromString(bladeWidthStr); * // 结果:mowingWidthStr = "42.50" */ public static String calculateMowingWidthFromString(String bladeWidthStr) { if (bladeWidthStr == null || bladeWidthStr.trim().isEmpty()) { return ""; } try { double bladeWidthMeters = Double.parseDouble(bladeWidthStr.trim()); return calculateMowingWidthString(bladeWidthMeters); } catch (NumberFormatException e) { return ""; } } }