SSブログ

Java:for文の練習問題(2) [勉強]

あー、for文でブログ記事2つになるとは思ってもいませんでしたYO。
ま、いいや。for文の()内の条件式って、かなり重要で、<の向きが違うだけで、思っていたことと処理結果が全然違ったりするんで、ホントfor文の条件式は慎重に、頭をひねりまくって書きましょう。ってか書くよう心がけます。(^-^;

次のfor文練習問題は、訓練中に講師から出された問題です。
「□■□■□・・・・■という模様を、入力された数だけ縦×横で描くプログラムを書いてください」

とりあえず、□■□■□■って交互に色が付いたり、白抜きだったり四角を連続表示させればイイんですよね。で、縦×横で描く。
・・・・・・(^-^;

 

自分なりに考えたソースは、以下の通りです。

import java.io.*;

public class Moyou1 {
 public static void main(String args[]) {
  BufferedReader kbd = new BufferedReader (new InputStreamReader(System.in));
  System.out.print("数値を入力してください。 :");
  try {
   String line = kbd.readLine();
   int kazu = Integer.parseInt(line);
   
   for (int i = 0; i < kazu; i++) {
    for (int j = 0; j < kazu; j++) {
     if (j % 2 == 0) {  //偶数値で■、奇数値で□を表示(横だけ)
     System.out.print("■");
    } else {
     System.out.print("□");
    }
   }
   System.out.println("");
   }
  } catch (IOException e) {
   System.out.println(e);
  } catch (NumberFormatException e) {
   System.out.println("正しい数値を入力してください。");
  }
 }
}

このソースを実行(もちろんコンパイルしてからね)すれば、□■□■と、奇数桁の部分には□、偶数桁の部分には■が表示されます。
いきなりここまで辿り着かない場合は、順を踏んでソースを書いていけばイイと思います。

まずは横1列に□(または■)だけを決まった数字(たとえば10とか決めちゃう)だけ表示するソース。
それが実現できたら、さらに入力された数だけ表示するソース。
それが実現できたら、次は縦×横で、□(または■)だけを入力させれた数だけ表示するソース。
そこまで実現できたら、あとはどうやって交互に□と■を表示させるか・・・ってことを考えたら、いけると思います。

 

この応用?として・・・
□■□■□■□・・・■
■□■□■□■・・・□
□■□■□■□・・・■
のように、行毎でも交互に□と■を表示させるようにするには・・・・・・

こんな感じのソースで。

import java.io.*;

public class Moyou2 {
 public static void main(String args[]) {
  BufferedReader kbd = new BufferedReader (new InputStreamReader(System.in));
  System.out.print("数値を入力してください。 :");
  try {
   String line = kbd.readLine();
   int kazu = Integer.parseInt(line);
   for (int i = 0; i < kazu; i++) {
    for (int j = 0; j < kazu; j++) {
     if ((j + i) % 2 == 0) {  //偶数値で■、奇数値で□を表示(縦にも横にも)
      System.out.print("■");
     } else {
      System.out.print("□");
     }
    }
    System.out.println("");
   }
  } catch (IOException e) {
   System.out.println(e);
  } catch (NumberFormatException e) {
   System.out.println("正しい数値を入力してください。");
  }
 }
}

Moyou1とMoyou2で何が違うか?
12行目です。
     if ((j + i) % 2 == 0) {
この違いで、模様の描かれ方に変化が出るんですねぇ。不思議ですねぇ。

 

・・・もう、つかれたYO ぱとらっしゅ

ということで、そろそろREDSTONEプレイタイムに突入するため、Java javaなブログ記事はココまで。
See you next time. (^-^)ノシ

 


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。