2016-08-19 5 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); 



    } 
} 

は初期化されていません。私はそれを初期化した。 どこが基本的に間違っていましたか?私は可変型とすべてを宣言し、私ができるすべてをやった。私はノブなので、私の愚かな質問や質問を赦してください。 ご協力いただければ幸いです!なぜ変数が初期化されていないと言われますか?

+0

どの変数が割り当てられていませんか?出力を見せることはできますか? –

+3

'System.out.println(' Result is "+ result);の' result'の値は 'switch 'がデフォルトの場合に当たるでしょうか? – bradimus

+0

ローカル変数はデフォルト値を取らず、デフォルトの場合には初期化していません –

答えて

1

result変数は何も受け取っていないでしょう。

スイッチに入る前、またはdefaultケース内にデフォルト値を指定する必要があります。

+0

ああありがとう!あなたは私の神のようなものです! – Abhishekstudent

1

ローカル変数にはデフォルト値がありません。変数にアクセスしたい場合は、変数int num1, num2, result, choice;を1で初期化する必要があります。

+1

投稿コードでは、(@bradimusコメントのように)値が割り当てられていなければ、 'result'だけにアクセスできます。 –

1

コメントで指摘されています。

変数result専用ケースchoiceの値を取得しているが123又は4ました。したがって、すべてのコードパスで変数resultが値に割り当てられているわけではありません。

ただし、すべてのコードパスはSystem.out.println("The Result Is "+result);になります。

の場合はresultに値を割り当てるか、または宣言時に値で初期化する必要があります。 。 。

+0

ありがとう、先生!それはついに働いた! – Abhishekstudent

0

次のようにmainメソッドの最初の行変更:あなたのスイッチのデフォルトの場合に行く場合は、それを印刷しようとしたとき

int num1, num2, result, choice = 0; 
関連する問題