如何在另一个开关盒中使用一个开关盒的值:值是扫描器输入?

时间:2013-08-24 08:10:13

标签: java

我有两个嵌套的开关,我想在另一个开关盒中使用一个开关盒的值。如下例所示,我想使用双变量 temp_usr 并将其作为参数传递给另一个开关案例中的方法(cels()),怎么能我这样做了?

switch( switch1){
case 1: 
{
System.out.println(" You have selected Celsius");
Scanner temp_ip= new Scanner(System.in);
System.out.println("Please enter the temperature in celsius");
double temp_usr= temp_ip.nextDouble();
}   
break;
case 2: ...............
case 3: ...............

switch(switch2) {
case 1: 
{
System.out.println("convert it into Celsius");
System.out.println(cels(arg));  /*this argument should take value of temp_usr*/
}
break;
case 2: .........  
case 3: ......... 

2 个答案:

答案 0 :(得分:1)

变量在定义的块内可见。如果要打开可见性,请在交换机外部声明它。试试这个:

double temp_usr= 0.0; //declaring here switch will make it visible in the following code
switch( switch1){
case 1: 
{
System.out.println(" You have selected Celsius");
Scanner temp_ip= new Scanner(System.in);
System.out.println("Please enter the temperature in celsius");
temp_usr= temp_ip.nextDouble();
}   
break;
case 2: ...............
case 3: ...............

switch(switch2) {
case 1: 
{
System.out.println("convert it into Celsius");
System.out.println(cels(arg));  /*this argument should take value of temp_usr*/
}
break;
case 2: .........  
case 3: ......... 

答案 1 :(得分:0)

首先,这些不是嵌套开关。

确保默认情况也会导致可访问的temp_usr。首先,出于范围原因,我在switch语句之外声明它:

double temp_usr=0;

我会在每个案例块中设置它,并允许default保留0

然后,它将可用,有效且在范围内,而第二个switch语句没有编译器错误。