javaの勉強をしているものです。
コマンドプロンプト上に下記のような出力をするのですが、
よくわかりません。よくある問題だとは思いますが、
どなたか教えていただければ幸いです。
下記問題内容↓
次の図形をfor文2つで再現してください。
if文は使ってもよい。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
outpu2
for文2回で実装の条件を満たしていなかったので書き直しました。
これも規則性を見つければ簡潔に書けました。
中心が必ずn-1番目(0スタート)となります。
if文で中心からの左右の位置で空白か0かを判定して出力させます。
java
1 public static void main(String[] args) { 2 output2(3); 3 } 4 private static void output2(int n) { 5 for(int i = n-1;i>=0;i--) { 6 7 int zero = n*2-1-2*i; 8 int cent = n-1; 9 10 for(int j = 0;j<n*2-1;j++) { 11 12 if(j<cent-zero/2 || j>cent+zero/2) { 13 System.out.print(" "); 14 }else { 15 System.out.print("0"); 16 } 17 } 18 System.out.println(); 19 } 20 }
投稿2018/09/05 08:00
編集2018/09/05 09:02総合スコア1009
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんな方法もあります。
Java
1public static void main (String[] args) throws java.lang.Exception 2{ 3 int[][] shape = { 4 {0,0,1,0,0}, 5 {0,1,1,1,0}, 6 {1,1,1,1,1}, 7 }; 8 String[] dot = {" ","O"}; 9 for (int y = 0; y < shape.length; y++) { 10 for (int x = 0; x < shape[y].length; x++) { 11 System.out.print(dot[shape[y][x]]); 12 } 13 System.out.println(); 14 } 15}
投稿2018/09/05 00:46
総合スコア691
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
まずは
OOOOO
OOOOO
OOOOO
を for を2つ使って出力することを考えます。
次に行の表示の for の中身を工夫して三角になるようにすることを考えます。
別の考え方としてこんな方法もあります。
表示したい形を for を1つ使って2次元配列で作ります。
その配列を for を 1つ使って表示させます。
これら3つのものをプログラムコードにしてみました。
java
1public class ProbexXXX { 2 static int H = 5; // 3 3 static int W = H * 2 - 1; 4 static int CENTER = H - 1; 5 6 public static void main(String[] args) throws Exception { 7 for (int i = 0; i < H; i++) { 8 for (int j = 0; j < W; j++) { 9 System.out.print("o"); 10 } 11 System.out.println(); 12 } 13 System.out.println(); 14 15 for (int i = 0; i < H; i++) { 16 for (int j = 0; j < W; j++) { 17 String c = "_"; 18 if (CENTER - j <= i && j - CENTER <= i) { 19 c = "o"; 20 } 21 System.out.print(c); 22 } 23 System.out.println(); 24 } 25 System.out.println(); 26 27 String[][] rows = new String[H][W]; 28 for (int i = 0; i < H * W; i++) { 29 int x = i % W; 30 int y = i / W; 31 String c = "_"; 32 if (CENTER - x <= y && x - CENTER <= y) { 33 c = "o"; 34 } 35 rows[y][x] = c; 36 } 37 for (String[] row : rows) { 38 System.out.println(String.join("", row)); 39 } 40 } 41} 42
投稿2018/09/04 22:17
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。