Java交换机在多种情况下使用变量的最佳实践
我想要一个switch语句,如下所示:Java交换机在多种情况下使用变量的最佳实践,java,switch-statement,Java,Switch Statement,我想要一个switch语句,如下所示: switch (something) { case 1: int a = 3; ... break; case 2: int a = 4; .... break; } 这不起作用,因为无法在该范围内重新定义。我看到以下选项: 在第二种情况下,只需使用“a=4” 把每个箱子放在支架上 在switch语句之前定义变量 在案例2中使用不同的变量名 这
switch (something)
{
case 1:
int a = 3;
...
break;
case 2:
int a = 4;
....
break;
}
这不起作用,因为无法在该范围内重新定义。我看到以下选项:
我看到过这样的问题,它们建议使用大括号,但它们不是关于最好的方法,而是关于如何让它发挥作用。大括号是正确的方法。{}创建一个新的作用域,这正是您想要的。大括号是正确的方法。{}创建一个新的作用域,这正是您想要的。大括号是正确的方法。{}创建一个新的作用域,这正是您想要的。大括号是正确的方法。{}创建一个新的作用域,这正是您想要的。您也可以使用Map:
Map<Integer, Integer> caseMap = new HashMap<Integer, Integer>() {{
put(1, 3);
put(2, 4);
}};
int a = caseMap.get(something);
Map caseMap=newhashmap(){{
put(1,3);
put(2,4);
}};
int a=caseMap.get(某物);
您还可以使用地图:
Map<Integer, Integer> caseMap = new HashMap<Integer, Integer>() {{
put(1, 3);
put(2, 4);
}};
int a = caseMap.get(something);
Map caseMap=newhashmap(){{
put(1,3);
put(2,4);
}};
int a=caseMap.get(某物);
您还可以使用地图:
Map<Integer, Integer> caseMap = new HashMap<Integer, Integer>() {{
put(1, 3);
put(2, 4);
}};
int a = caseMap.get(something);
Map caseMap=newhashmap(){{
put(1,3);
put(2,4);
}};
int a=caseMap.get(某物);
您还可以使用地图:
Map<Integer, Integer> caseMap = new HashMap<Integer, Integer>() {{
put(1, 3);
put(2, 4);
}};
int a = caseMap.get(something);
Map caseMap=newhashmap(){{
put(1,3);
put(2,4);
}};
int a=caseMap.get(某物);
我猜您正在捕获带有illegalstateexception并使用默认块的任何异常
default:
doSomething();
break;
不使用大括号。它还说,如果一个语句没有中断,就应该添加一个完整的注释
然而,为了可读性和可靠性,任何超过一行的内容都可以用大括号包装,而不会影响性能。大括号告诉编译器创建一个新的作用域,并将代码作为块执行。如果你所做的只是改变,那么这并不是真的必要。如果可以在一行中编写switch case语句,而不使用大括号,那么就这样做。java中的许多东西在一行实例中不使用大括号,包括if语句
接下来,您可以在switch语句之外的语句中重新定义需要重用或设置的任何变量。这将是最小化整数的连续实例化的最佳实践
如果不止一行,您应该尝试使用以下几种方法:
int a=0;
switch (something)
{
case 1:{
a = 3;
...
break;
}
case 2:{
a = 4;
....
break;
}
default:
{
try{
throw new IllegalStateException();
}catch(IllegalStateException e)
{
e.printStackTrace();
}
}
}
我猜您正在捕获任何带有illegalstateexception并使用默认块的异常
default:
doSomething();
break;
不使用大括号。它还说,如果一个语句没有中断,就应该添加一个完整的注释
然而,为了可读性和可靠性,任何超过一行的内容都可以用大括号包装,而不会影响性能。大括号告诉编译器创建一个新的作用域,并将代码作为块执行。如果你所做的只是改变,那么这并不是真的必要。如果可以在一行中编写switch case语句,而不使用大括号,那么就这样做。java中的许多东西在一行实例中不使用大括号,包括if语句
接下来,您可以在switch语句之外的语句中重新定义需要重用或设置的任何变量。这将是最小化整数的连续实例化的最佳实践
如果不止一行,您应该尝试使用以下几种方法:
int a=0;
switch (something)
{
case 1:{
a = 3;
...
break;
}
case 2:{
a = 4;
....
break;
}
default:
{
try{
throw new IllegalStateException();
}catch(IllegalStateException e)
{
e.printStackTrace();
}
}
}
我猜您正在捕获任何带有illegalstateexception并使用默认块的异常
default:
doSomething();
break;
不使用大括号。它还说,如果一个语句没有中断,就应该添加一个完整的注释
然而,为了可读性和可靠性,任何超过一行的内容都可以用大括号包装,而不会影响性能。大括号告诉编译器创建一个新的作用域,并将代码作为块执行。如果你所做的只是改变,那么这并不是真的必要。如果可以在一行中编写switch case语句,而不使用大括号,那么就这样做。java中的许多东西在一行实例中不使用大括号,包括if语句
接下来,您可以在switch语句之外的语句中重新定义需要重用或设置的任何变量。这将是最小化整数的连续实例化的最佳实践
如果不止一行,您应该尝试使用以下几种方法:
int a=0;
switch (something)
{
case 1:{
a = 3;
...
break;
}
case 2:{
a = 4;
....
break;
}
default:
{
try{
throw new IllegalStateException();
}catch(IllegalStateException e)
{
e.printStackTrace();
}
}
}
我猜您正在捕获任何带有illegalstateexception并使用默认块的异常
default:
doSomething();
break;
不使用大括号。它还说,如果一个语句没有中断,就应该添加一个完整的注释
然而,为了可读性和可靠性,任何超过一行的内容都可以用大括号包装,而不会影响性能。大括号告诉编译器创建一个新的作用域,并将代码作为块执行。如果你所做的只是改变,那么这并不是真的必要。如果可以在一行中编写switch case语句,而不使用大括号,那么就这样做。java中的许多东西在一行实例中不使用大括号,包括if语句
接下来,您可以在switch语句之外的语句中重新定义需要重用或设置的任何变量。这将是最小化整数的连续实例化的最佳实践
如果不止一行,您应该尝试使用以下几种方法:
int a=0;
switch (something)
{
case 1:{
a = 3;
...
break;
}
case 2:{
a = 4;
....
break;
}
default:
{
try{
throw new IllegalStateException();
}catch(IllegalStateException e)
{
e.printStackTrace();
}
}
}
在您的代码上下文中,
开关的作用是什么?还有,你为什么不喜欢这些选项?这是他们让你恼火的事情之一吗?或者你有客观的设计理由吗?在一个完美的世界里,你更喜欢什么?我喜欢上面写的。(像大括号,但不需要添加额外的大括号)我不喜欢4,因为它是一种变通方法,我不喜欢1,因为它更难看到。2和3是我可以接受的,但是n是