我仍然在编写代码,并且它在像我这样的项目中没有产生很大的不同,但如果我要做更大的事情,那将是一件痛苦的事。这是:
case 0:
System.out.print("Insert the N: ");
double N = in.nextDouble();
double mol = N / Na;
System.out.print("There are " + mol + " mol in that sample");
break;
case 1:
System.out.print("Insert the m: ");
double m = in.nextDouble();
System.out.print("Insert the M: ");
double M = in.nextDouble();
double mol = m / M;
System.out.print("There are " + mol + " mol in that sample");
break;
case 2:
System.out.print("Insert the V: ");
double V = in.nextDouble();
double mol = V / Vm;
System.out.print("There are " + mol + " mol in that sample");
break;
第一个" mol"没有问题,但在案例1和案例2中,它表示"复制局部变量mol"。如果我使用If语句就可以了。 Java是这样还是有办法解决它?
由于
答案 0 :(得分:15)
那是因为case
没有创建范围。因此,两种情况下的两个变量都在同一范围内。如果你想这样做,你可以为每个案例添加大括号,这将为每个案例创建一个新的范围。
case 0: {
System.out.print("Insert the N: ");
double N = in.nextDouble();
double mol = N / Na;
System.out.print("There are " + mol + " mol in that sample");
break;
}
case 1: {
System.out.print("Insert the m: ");
double m = in.nextDouble();
System.out.print("Insert the M: ");
double M = in.nextDouble();
double mol = m / M;
System.out.print("There are " + mol + " mol in that sample");
break;
}
但是,理想情况下,不需要为每种情况声明一个单独的局部变量。如果在所有情况下都使用变量,那么这清楚地表明要在switch
语句中直接声明的变量:
switch (someVar) {
double mol = 0.0;
case 0: mol = n / Na;
break;
case 1: mol = m / M;
break;
}
P.S。:我可以建议您将变量命名为英文字母 - n
,M
,N
吗?
答案 1 :(得分:4)
因为single block
中存在这些变量,您可能会在某些switch
中编写此method
语句。
在单一方法中,您不能拥有重复变量。