Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java开关(在一种情况下使用值,在另一种情况下计算)_Java - Fatal编程技术网

Java开关(在一种情况下使用值,在另一种情况下计算)

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在菜单之间导航

我有这样的想法:

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我的错。很抱歉