質問: 1`で条件式がtrueなので処理に入ります。 まず最初の処理は ``` while y <= 9 do ``` で、whileの中にwhileを作った形になってます。 条件式`y <= 9`のwhile文で1*1 ~ 1*9までの結果が出力に出るはずです。 無限ループを防ぐため`y += 1`。 この内側のwhileがfalseになって初めて、`puts`が実行され、改行されます。(次の段を表示するため) 最後に次の段の計算をしたいので`x += 1`で段を進めてます。 それでまた`while x <= 9 do`に来て、条件式がtrueになるので同じ処理が続いてくはずです。 なのに出力結果は1の段しか出ません.... 凄く下手で見辛い質問で申し訳ありません。 自分なりに格闘して探ってみたのですが、解決できません。どうかよろしくおねがいします
回答: while文は条件式だけ書くので、このままだと次の段に行った時に変数yの値が10のままになり、変数yが1に初期化されない。(他言語でfor文を使う場合、for文内に変数初期化がある) つまり、内側の`while y <= 9 do`のwhile文は変数yが10なので、falseになり、このように1の段の結果しか処理されない。 解決法としては ``` while x <= 9 do while y <= 9 do print((x*y).to_s + "") y += 1 end puts #変数yを1に戻す y = 1 x += 1 end ``` とする。yの初期化を加えるだけ