2016-08-19 91 views
0
package mmm; 
import java.util.Scanner; 
public class Hi{ 
    public static void main(String args[]){ 
     int num1, num2, result, choice; 
     Scanner abhi = new Scanner(System.in); 
     System.out.println("You Have The Following Choices:"); 
     System.out.println("1. Addition"); 
     System.out.println("2. Subtraction"); 
     System.out.println("3. Multiplication"); 
     System.out.println("4. Division "); 

     choice = abhi.nextInt(); 
     System.out.println("Enter The First Number"); 
     num1 = abhi.nextInt(); 
     System.out.println("Enter The Second Number"); 
     num2 = abhi.nextInt(); 
     switch(choice){ 
     case 1: 
      result = num1 + num2; 
     break; 
     case 2: 
      result = num1 - num2; 
     break; 
     case 3: 
      result = num1 * num2; 
     break; 
     case 4: 
      result = num1/num2; 
     break; 
     default: 
      System.out.println("Error"); 


     } 
     System.out.println("The Result Is "+result); 



    } 
} 

它說result沒有初始化;而我初始化了它。 我基本上哪裏錯了?我宣佈變量類型和所有,並盡我所能。我是一個小白菜,所以,請原諒我愚蠢的問題和疑問。 任何幫助,將不勝感激!爲什麼說變量沒有初始化?

+0

哪個變量未分配?你能告訴我們輸出嗎? –

+3

'System.out.println(「Result Is」+結果)中'result'的值是多少;'如果'switch'命中了默認情況? – bradimus

+0

局部變量不採用默認值,並且您在默認情況下不初始化它 –

回答

1

如果你在交換機的默認情況下走,result變量將已嘗試打印時收到什麼。

在進入交換機之前或在default的情況下,您必須將其設置爲默認值。

+0

哦,謝謝你,先生!你就像我的神! – Abhishekstudent

1

局部變量沒有默認值。如果你想訪問它們,你必須用變量int num1, num2, result, choice;初始化變量。

+1

在發佈的代碼中,只有'result'才能被訪問而沒有被賦值(按照@bradimus註釋)。 –

1

正如評論所指出的那樣。

可變result僅獲取在箱子choice值爲1234。因此,並非所有代碼路徑都會導致將變量result分配給一個值。

但是,所有代碼路徑都會導致System.out.println("The Result Is "+result);

您必須在default的情況下爲result指定一個值,或者在聲明它時用一個值初始化它。 。 。

+0

非常感謝,先生!它終於奏效了! – Abhishekstudent

0

更改您在main方法第一行如下:

int num1, num2, result, choice = 0;