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

Kotlin开发中SensorEvent值匹配区间时if语句被跳过直接走else

问题根因
  • Kotlin 使用 .. 运算符生成的是升序闭区间,要求左端点值 ≤ 右端点值才会生成有效区间。你当前写的 0.900000..-0.900000 左端点大于右端点,属于空区间,没有任何数值能满足 in 条件,所以if分支永远不会触发。
修复方案

根据你的实际业务需求选择对应写法:

  1. 如果你要判断zAxis落在 -0.9 到 0.9 的范围内,直接把区间顺序调换即可:
override fun onSensorChanged(event: SensorEvent) {
    runOnUiThread {
        val xAxis = event.values[0]
        val yAxis = event.values[1]
        val zAxis = event.values[2]
        Log.d("Eixos", /*"Eixo X: $xAxis, Eixo Y: $yAxis,*/ "Eixo Z: $zAxis")
        if (zAxis in -0.900000..0.900000){
            imagemCelular!!.setImageResource(R.drawable.phoneright)
            Log.d("Phonin", "Certo")
        }else{
            imagemCelular!!.setImageResource(R.drawable.phonewrong)
            Log.d("Phonin", "Errado")
        }
    }
}
  1. 如果你要判断zAxis的绝对值大于等于0.9(即 ≤-0.9 或 ≥0.9),可以用以下两种写法替换判断条件:
// 写法1:直接写判断逻辑
if (zAxis <= -0.9 || zAxis >= 0.9)

// 写法2:调用绝对值方法更简洁
if (zAxis.absoluteValue >= 0.9)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:45:05