• 締切済み

Javascript初心者です。

Javascript初心者です。 どうしてもわからなくて困っています。 下の図のように1から、最大10個の☆をalertで表示させるものをつくったのですが ☆ ☆☆ ☆☆☆ ☆☆☆☆ ~ ☆☆☆☆☆☆☆☆☆☆ for(var i = 1; i <= 10; i++){ //alert("☆"); var star = ""; for(var j = 1; j <= i; j++){ star += "☆"; }     alert(star); } これを用いた2つの応用問題に苦戦しています。 (1)偶数の場合は★のみで表示 ☆ ★★ ☆☆☆ ★★★★ ~ ★★★★★★★★★★ (2)偶数の番号の☆マークが★に ☆ ☆★ ☆★☆ ☆★☆★ ~ ☆★☆★☆★☆★☆★ といったものです。説明がわかりづらいかもしれませんが、 偶数、奇数をif文で条件分岐することは理解しているのですが、 web上で調べてもわからず、ループの階層構造がイメージできないまま苦戦しています。 どなたか宜しくお願い致します。

みんなの回答

回答No.2

おはよう~! もし、みじかくしたいのなら、 //1 for(var i=1;i++<11;)alert((new Array(i)).join(i&1?'★':'☆')); //2 for(var i=0;i++<10;)alert('☆★☆★☆★☆★☆★'.substring(0,i)); var i=10,s='';while(i--)alert(s+=i&1?'☆':'★'); for(var i=10,s='';i--;)alert(s+=i&1?'☆':'★'); きっと、さらにみじかいこーどをかくことに、「もえ~」なかたがたの、とうこうが あるかもしれないな~。ばぶ。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

star += "☆"; ここで、☆を追加していますよね? だから、元のループでは「☆」が出ています。 それなら、入れる物を変えてしまえば良い。 偶数行で★を表示させるなら、内側のループの「前に」判断させて変数にとってしまう。 var star = ""; for(var j = 1; j <= i; j++){ star += "☆"; }   ↓ var star = ""; if((i % 2) == 0){ var star_temp = "★"; }else{ var star_temp = "☆"; } for(var j = 1; j <= i; j++){ star += star_temp; } 偶数個で★を表示させるなら、内側のループの「中で」判断させ変数にとってしまう。 for(var j = 1; j <= i; j++){ star += "☆"; }    ↓ for(var j = 1; j <= i; j++){ if((j % 2) == 0){ var star_temp = "★"; }else{ var star_temp = "☆"; } star += star_temp; } その他、何処で判断させたら、どうなるかは色々やってみましょう。

関連するQ&A