2013-08-24 85 views
-4

我有兩個嵌套開關,我想在另一個開關盒中使用一個開關盒的值。正如在下面的例子中,我想使用雙變量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: ......... 
+0

當你嘗試這個時發生了什麼?我建議你修改格式以便閱讀。 –

+0

那麼,如果'switch1'是2但switch2'是1,你會發生什麼? –

+0

我沒有得到您的問題。請解釋。 – freetiger

回答

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

不要爲他們做用戶的作業,即使它是代碼的骨架... – hexafraction

+0

它的工作..這是一個很好的catch ..我會記住.. 謝謝! – freetiger

0

首先,這些不是嵌套開關。

確保默認情況下也會導致訪問temp_usr。首先,我要聲明它的開關語句外的範圍原因:

double temp_usr=0; 

我將它設置在每種情況下塊,並允許default保持0

然後,它將在第二個switch語句沒有編譯器錯誤的情況下可用,有效並且在範圍內。

+0

感謝您的回覆...在這裏,我剛剛寫了一段代碼.. 我想你的方式。 – freetiger