考虑以下代码:
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;
}
这是相当难看,我想用开关的情况下,但我该如何使用switch
与2
变量?
谢谢
您可以使用枚举来做所有事情。我为前两个值创建了示例,其余内容可以继续。
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中有可能吗