Java开关(在一种情况下使用值,在另一种情况下计算)
我正在制作一个有菜单的程序,我正在使用switch在菜单之间导航 我有这样的想法:Java开关(在一种情况下使用值,在另一种情况下计算),java,Java,我正在制作一个有菜单的程序,我正在使用switch在菜单之间导航 我有这样的想法: switch (pick) { case 1: // Here the program ask the user to input some data related with students (lets say // name and dob). Student is a class and the students data is stored in 1 array of /
switch (pick) {
case 1:
// Here the program ask the user to input some data related with students (lets say
// name and dob). Student is a class and the students data is stored in 1 array of
// students. If I do:
// for (Student item: students){
// if (item != null){
// System.out.println(item);
// }
// }
// It will print the name and dob of all the students inserted because I've created
// a toString() method that returns the name and dob of the students
case 2:
// On case 2 at some point I will need to print the array created on the case
// above. If I do again:
// for (Student item: students){
// if (item != null){
// System.out.println(item);
// }
// }
// It says that students variable might have not been initialized.
问题:
如果一个变量是在一种情况下创建的,那么它的值不能在另一种情况下使用?
我试图做的是首先在案例1中输入值,然后在案例2中能够使用案例1中定义的一些值
如果做不到,请给我指出正确的方向
请记住,我才开始学习java几个星期
favolas每当有花括号时,你就有了一个不同的范围 如果您在其中创建变量,那么当您离开该范围时,它们将丢失 如果之前创建了变量,则可以使用它
int subMenu = 0;
switch(...){
...
subMenu = 1;
}
if (subMenu == 1 ){
....
}
即使您离开开关,也能正常工作。只要有花括号,您就有了一个不同的作用域 如果您在其中创建变量,那么当您离开该范围时,它们将丢失 如果之前创建了变量,则可以使用它
int subMenu = 0;
switch(...){
...
subMenu = 1;
}
if (subMenu == 1 ){
....
}
即使在您离开开关时也会工作。在开关之前声明变量,您将能够在所有情况下使用它们
int var1;
switch(number) {
case 1:
var1 = 2;
break;
case 2:
var2 += 3;
break;
...
在切换之前声明变量,您将能够在所有情况下使用它们
int var1;
switch(number) {
case 1:
var1 = 2;
break;
case 2:
var2 += 3;
break;
...
如果您尝试在案例1中声明(即:int a=2)一个变量,然后在案例2中也使用它,您将得到错误消息:“变量已定义…”。这就解释了为什么不能这样做,编译器必须在使用变量之前知道您已经声明了一个变量
如果在switch语句之前声明所有变量,就可以了。例如:
int var;
swith(...){
case 1:
var ++;
break;
case 2:
var +=10;
break;
}
如果您尝试在案例1中声明(即:int a=2)一个变量,然后在案例2中也使用它,您将得到错误消息:“变量已定义…”。这就解释了为什么不能这样做,编译器必须在使用变量之前知道您已经声明了一个变量
如果在switch语句之前声明所有变量,就可以了。例如:
int var;
swith(...){
case 1:
var ++;
break;
case 2:
var +=10;
break;
}
注意:不要忘记在每个案例的结尾添加break语句,因为案例标签中的语句是按顺序执行的,直到遇到break为止。再见,谢谢。忘了这件事吧,你已经知道要把它打破。不要忘记在每个案例的末尾添加break语句,因为案例标签中的语句是按顺序执行的,直到遇到break为止。再见,谢谢。忘了这一点,你已经知道必须打破僵局。你说的是“第一个问题:”,还有“第二个问题”吗?@javalava,我的错。对不起,你说了“第一个问题:”,还有“第二个问题”吗?@java lava我的错。很抱歉