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

如何将屏幕x坐标转换为等宽单元格对应的数组下标

计算逻辑很简单,核心是利用浮点数除法后向下取整匹配区间规则,再做个简单的边界校验避免数组越界即可。

具体实现

public static int getIndexAt(float x) {
    // 计算单个单元格的宽度,转float避免整数除法精度丢失
    float cellWidth = (float) WIDTH / SIZE;
    // 浮点数除法后强转int默认向下取整,刚好匹配左闭右开的区间规则
    int index = (int) (x / cellWidth);
    // 处理x恰好等于WIDTH的边界情况,防止下标超出数组范围
    return Math.min(index, SIZE - 1);
}

验证效果

拿你给出的示例测试:

  • WIDTH=300,SIZE=3,cellWidth=100,x=250时,250/100=2.5,强转int得2,符合预期
  • 你现有代码中WIDTH=900、SIZE=3、x=447.0f的场景,447/300=1.49,返回下标1,运行不会报错

注意事项

如果后续WIDTH和SIZE要改成动态传入的参数,给方法加两个入参即可,计算逻辑不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 04:24:04