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

如何优化Java中实现精准数值平滑移动的Switch代码?

精简Java按钮平滑移动代码的方案

Great question! Using an array is exactly the right approach here—your current switch statement is full of repetitive logic, and mapping those exact viewGravity values to Y offsets via an array will clean this up nicely while preserving all your precise numbers.

核心思路

每个viewGravity值都对应一个固定的viewY变化量,只有两个特殊场景需要更新viewJumping状态。我们可以把所有Y轴偏移量存在数组里(数组索引对应viewGravity的值),再单独处理那两个特殊的状态修改逻辑。这样就能彻底消除冗余的switch case模板代码。

简化后的代码示例

首先,把偏移量定义为常量数组(这样你的精确数值会更规整,后续修改也更方便):

// 数组索引对应viewGravity的值,元素是对应的viewY变化量
private static final int[] GRAVITY_Y_OFFSETS = {
    -2,  // viewGravity = 0
    -2,  // viewGravity = 1
    -2,  // viewGravity = 2
    -2,  // viewGravity = 3
    -4,  // viewGravity = 4
    -8,  // viewGravity = 5
    -16, // viewGravity = 6
    -24, // viewGravity = 7
    -32, // viewGravity = 8
    -40, // viewGravity = 9
    -48, // viewGravity = 10
    0,   // viewGravity = 11(原代码未处理,默认设为0不影响逻辑)
    2,   // viewGravity = 12
    2,   // viewGravity = 13
    2,   // viewGravity = 14
    2,   // viewGravity = 15
    4,   // viewGravity = 16
    8,   // viewGravity = 17
    16,  // viewGravity = 18
    24,  // viewGravity = 19
    32,  // viewGravity = 20
    40,  // viewGravity = 21
    48   // viewGravity = 22
};

然后用下面这段简洁的逻辑替换你原来的switch语句:

if (viewJumping == 1) {
    // 先处理需要修改viewJumping的特殊情况
    if (viewGravity == 0) {
        viewJumping = 2;
    } else if (viewGravity == 12) {
        viewJumping = 0;
    }
    
    // 通过预定义的偏移数组更新viewY,同时做边界检查避免越界
    if (viewGravity >= 0 && viewGravity < GRAVITY_Y_OFFSETS.length) {
        viewY += GRAVITY_Y_OFFSETS[viewGravity];
    }
    
    viewGravity -= 1;
}

这个方案的优势

  • 精确数值完全保留: 你原来代码里的每一个偏移量都完整存在数组中,不会改变按钮的移动行为。
  • 更简洁易维护: 再也不用重复写一堆viewY -= X的代码,后续修改数值只需要编辑数组,不用在switch case里逐个查找。
  • 更安全: 边界检查能避免如果viewGravity超出0-22范围时出现数组越界错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:43:53