• ベストアンサー

自分でプログラミング組んで分からないことがあるんで

偶然試したら動きました でもイマイチ理解できない部分がありまして恥を忍んで質問させていただきます java A{ public static void main(String[]args){ int count=0; if(++count%10==0){ System.out.print("*"); } } } このif(++count%10==0){ } ってどういう処理をしていますか? countは何回足し続けていますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

No.2です。 補足にあるプログラムなら、 for文で(iが0から99まで)100回ループしているので、 ループ内でcountは1つずつ100回加算されます(1~100までカウントされます)。 countの値がそれぞれ10,20,30,40,50,60,70,80,90,100になった時に if文の条件がtrueとなり、System.out.print("*")が実行されますので、 System.out.print("*")は10回実行されます。 つまり、*文字が10個表示されるはずです。

skybkird
質問者

お礼

ご丁寧に有難うございます。 補足のほうが結果的には動きましたが組んでいてわからなかって指摘するひとが困っていましたでも本当に助かります。 なるほどcountの回数で判定しているんですね。 今までモヤモヤした状況が続いていたんですっきりしました。 ベストアンサーにさせていただきます

その他の回答 (3)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.4

補足・訂正後のコードを実行すると ********** と表示されます。 http://ideone.com/oHWBDV 上記リンク先のサービスでどうやってJavaソースファイル名を与えるかを知らないので 一行目を class Sample としましたけれど, 一行目が public class Sample なら Javaソースファイル名を Sample.java としてください。

skybkird
質問者

お礼

ご丁寧にサイトに乗せて頂いて有難うございます。 参考にさせていただきます

回答No.2

質問文にあるプログラムは、特にforやwhileでループしていないので、 ++countでcountが0から1になり、if(1%10==0)がfalseとなるので、 「System.out.print("*")」は通過せず(*文字は何も表示されず) プログラム終了になると思います。 countは1回足されておしまいです。 偶然試したら動いたプログラムというのは、本当にこの通りですか? どんな動作を偶然動いたと認識したのですか?

skybkird
質問者

お礼

どんな動作を偶然動いたと認識したのですか? >>10の倍数の計算を求める方法を別の方法で考えられないかと思って組んでみました。 でも組んでみていまいちわからななくて組んで状況です

skybkird
質問者

補足

すみません・・・訂正します。 public class Sample { public static void main(String[]args){ int count=0; for(int i=0; i<100; i++){ if(++count%10==0){ System.out.print("*"); } } } }

  • ponta1971
  • ベストアンサー率30% (361/1191)
回答No.1

++countでcount=count+1をしています。 ++count%10では++countを10で割った余りを求めています。 なので++count%10==0では余りが0になったときと言うことになります。 countは10になるまで、10回足し続け、10になったときにFalseになってif文を抜けます。 たぶんこのような動きをしていると思います。 画面に*が9個表示されていませんか?

skybkird
質問者

補足

すみません・・・補足します public class Sample { public static void main(String[]args){ int count=0; for(int i=0; i<100; i++){ if(++count%10==0){ System.out.print("*"); } } } } です 出力結果質問文では一個も表示されませんでした