当前位置: 首页 > 面试题库 >

切换两个INT变量的大小写

范承志
2023-03-14
问题内容

考虑以下代码:

if (xPoint > 0 && yPoint > 0) {
    m_navigations = Directions.SouthEast;
}
else if (xPoint > 0 && yPoint < 0) {
    m_navigations = Directions.NorthEast;
}
else if (xPoint < 0 && yPoint > 0) {
    m_navigations = Directions.SouthWest;
}
else if (xPoint < 0 && yPoint < 0) {
    m_navigations = Directions.NorthWest;
}
else if (xPoint == 0 && yPoint < 0) {
    m_navigations = Directions.North;
}
else if (xPoint == 0 && yPoint > 0) {
    m_navigations = Directions.South;
}
else if (xPoint > 0 && yPoint == 0) {
    m_navigations = Directions.East;
}
else if (xPoint < 0 && yPoint == 0) {
    m_navigations = Directions.West;
}

这是相当难看,我想用开关的情况下,但我该如何使用switch2变量?

谢谢


问题答案:

您可以使用枚举来做所有事情。我为前两个值创建了示例,其余内容可以继续。

public enum Direction
{
    SouthEast(1,1),
    NorthEast(1,-1);

    int _xPoint, _yPoint;

    Direction(int xPoint, int yPoint)
    {
        _xPoint = xPoint;
        _yPoint = yPoint;
    }

    public static Direction getDirectionByPoints(int xPoint, int yPoint)
    {
        for (Direction direction : Direction.values())
        {
            if(   Integer.signum(xPoint) == direction._xPoint 
               && Integer.signum(yPoint) == direction._yPoint )
            {
                return direction;
            }
        }
        throw new IllegalStateException("No suitable Direction found");
    }
}

因此,您可以致电:

m_navigations = Direction.getDirectionByPoints(xPoint,yPoint);


 类似资料:
  • 问题内容: 在官方的《Swift编程语言指南》中,它有关于开关情况的说法:“ …如果情况包含与控件表达式匹配的多个模式,则这些模式均不能包含常量或变量绑定。” 包含多个模式是什么意思? 问题答案: 这意味着具有多个模式的案例标签无法声明变量。 这是允许的: 这也是允许的: 但是,这是禁止的: 上面产生一个错误:

  • 模仿网易新闻客户端以及新浪微博,左右滑动可以加载新视图,推出当前视图,返回上一级视图时,上一级视图有渐隐渐显和大小渐变的效果。 [Code4App.com]

  • 操作步骤: 菜单栏: Edit —> Toggle Case 快捷键: Mac: Shift + Command + U Windows/Linux: Ctrl + Shift + U

  • 问题内容: 由于我有多个案件应该以相同的方式处理,因此我尝试: 但是我得到一个编译器错误。 在Java中,我是否应该逐个调用相同的函数: 有没有更简单的风格? 问题答案: 您必须为每个String 使用关键字,如下所示: 编辑02/05/2019 Java 12 从Java 12开始,提出了新的switch case语法,因此要解决此问题,方法如下: 现在,您可以选择多个选项,并用逗号分隔,一个箭

  • 问题内容: 所以我想使用这样的switch语句: 现在我知道这些语句()或()都不起作用(显然是由于不同的原因)。我要问的是最有效的方法。我讨厌使用30条语句,所以我宁愿使用switch语法。有什么我可以做的吗? 问题答案: 当我查看其他答案中的解决方案时,我看到了一些我知道对性能不利的东西。我本来要对它们发表评论,但我认为最好对其进行基准测试并分享结果。您可以自己进行测试。下面是我在每个浏览器中

  • 在两行中编写一段代码,即交换两个变量而不使用第三个变量。在java中有可能吗