dポイントプレゼントキャンペーン実施中!

やさしいJavaという本を買ったのですが、良くわからない箇所がありました。

--------------省略-----------------

class Sample6
{
public static void main(String[] args) throws IOException
{
System.out.println("整数を3つ入力してください。") ;

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)) ;

String str1 = br.readLine() ;
String str2 = br.readLine() ;
String str3 = br.readLine() ;

int sum = 0 ;
sum += Integer.parseInt(str1) ;

-------------------略-----------------

int sum = 0 ; とありますが、0と設定しておく必要はありますか?
無いとまずいですか? いきなりこのコードが出てきたと思うのですが
どこかに書いてましたっけ?

A 回答 (2件)

int sum ;


とだけある場合、このローカル変数sumは初期化されていません。
他の言語には、sum=0 に必ず初期化される、というものもありますが、Javaでは、そうではありません。
そして、初期化されていない変数を参照することができません。エラーになります。

sum += Integer.parseInt(str1) ;
とあるので、ここで、まず、sumの現在の値が参照され、それと Integer.parseInt(str1) が足し算され、 sum に格納されます。
初期化されていなければ、この「参照」ができないのでエラーになります。

この回答への補足

ものすごい分かりやすかったです!

補足日時:2013/07/27 12:43
    • good
    • 0
この回答へのお礼

回答有難うございます。

お礼日時:2013/07/27 12:27

>sum += Integer.parseInt(str1) ;


この処理が内部的に以下の処理を行なっています。
>sum = sum + Integer.parseInt(str1) ;

右辺にsumを使用しているので、使用前には
> sum = 0 ;
と設定する必要があります。

逆に以下の場合なら、0を設定する必要はありません。
>sum = Integer.parseInt(str1) ;

この回答への補足

>右辺にsumを使用しているので、使用前には
>> sum = 0 ;
>と設定する必要があります。


設定しなければ駄目ですか?

補足日時:2013/07/23 00:31
    • good
    • 0
この回答へのお礼

丁寧な回答有難うございます。

お礼日時:2013/07/23 00:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!