Java:for文の練習問題(1) [勉強]
こんな朝早くから何をやっているんでしょうね、私ってば。
まぁ、REDSTONEの方では、各キャラが既に それぞれが通っている秘密ダンジョンのポタ(入口の鍵)を出し終えているから、朝はのんびりJava Timeです。
で、職業訓練で使用している教科書の6章「for文」の練習問題でもやりますか。
って、これも訓練中にやっつけちゃってるなぁ・・・。
とりあえず、面白そうなヤツ。
訓練中にもやったんですけどね。先にできちゃった人は応用であれこれ手を加えてくださいって感じになった中でもちょっと頭を使ったヤツです。
問題は・・・二重のfor文を使って以下のような出力結果を表示するプログラムを書くこと。
まぁ、このソースは教科書内に記述されているんですけどね。
以下、ソースです。
public class DrawGraph1 {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
System.out.print(i + ":");
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println("");
}
}
}
これを工夫して、*が表示される形を現在の からに変更するには・・・
ソースをちょっと変更する必要がありますね。
あーー・・・からに変更する方が簡単かな?
public class DrawGraph2 {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
System.out.print(i + ":");
for (int j = 0; j < 10 - i; j++) {
System.out.print("*");
}
System.out.println("");
}
}
}
これで、*が逆から表示されるようになります。
キモは5行目の
for (int j = 0; j < 10 - i; j++) {
j < 10 - iの部分ですね。これで*の表示を逆さまにしているんですね。
じゃー、次。って表示される*をって表示させる。
以下、ソースです。
public class DrawGraph3 {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
System.out.print(i + ":");
for (int j = 9; j > i; j--) {
System.out.print(" ");
}
for (int k = 0; k < i; k++) {
System.out.print("*");
}
System.out.println("");
}
}
}
for分が一個追加されました。空白部分(半角スペース)を表示してから*を表示するようになってますね。さらに、このって表示されるようになった*を上下逆にって表示されるようにします。
以下、ソースです。
public class DrawGraph4 {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
System.out.print(i + ":");
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int k = 0; k < 10-i; k++) {
System.out.print("*");
}
System.out.println("");
}
}
}
DrawGraph1の応用で向きを上下逆にしたのがDrawGraph2です。で、次にDrawGraph1の小用で左右反転させたのがDrawGraph3です。最後にDrawGraph3を上下逆にしたのがDrawGraph4です。
あー、ややこしや。
最後に・・・・・・*の表示が、こんな感じになるようにするには??
DrawGraph1を工夫すれば、できるみたいです。
私なりにやってみた結果は、以下のソースです。
public class DrawGraph5 {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
System.out.print(i + ":");
for (int j = 9; j > i; j--) {
System.out.print(" ");
}
for (int n = 0; n < i; n++) {
System.out.print("*");
}
for (int m = 0; m < i; m++) {
System.out.print("*");
}
System.out.println("");
}
}
}
DrawGraph1とDrawGraph3が合体したようなモノですね。
で・・・ここからさらに。
表示されている行の数のべき乗の結果とおなじ数だけ*を表示。練習問題6-2です。
「0~9の2乗のグラフを描くプログラムを作ってください」
はぁ・・・for文の*表示してグラフを描くだけで、こんなにもページが進むなんて思わなかったYO。
以下、自分なりの回答ソースです。
public class DrawGraph {
public static void main(String[] args) {
for (int i=0; i<10; i++) {
System.out.print(i + ":");
for (int j=0; j<i*i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
キモはやっぱり5行目ですね。
for (int j=0; j<i*i; j++) {
このi * iで、0~9の2乗をやっているワケです。
実行した結果、こんな感じです。
ちょっとfor文が長くなりましたねぇ。
for文とかの応用で、もうちょっと面白くて頭を使った問題がありますので、次の記事にしますね。
コメント 0