質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

4回答

1465閲覧

java初心者 ループ文問題

Mitz

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/09/04 14:09

javaの勉強をしているものです。
コマンドプロンプト上に下記のような出力をするのですが、
よくわかりません。よくある問題だとは思いますが、
どなたか教えていただければ幸いです。

下記問題内容↓

次の図形をfor文2つで再現してください。
if文は使ってもよい。

出力内容)
イメージ説明
System.out.print(" 0 ");等は使用禁止。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/09/04 14:17

少し前に同じような問題を質問として聞かれている方がいたように思いますが、出題元が同じなのでしょうか。
guest

回答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
opyon

総合スコア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

shozi3

総合スコア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

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

for(int i=0;i<n;++i){ for(int j=0;j<2*n+1;++j){ System.out.print(0); } System.out.println(); }

投稿2018/09/04 14:14

ruei

総合スコア284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mitz

2018/09/04 14:17

ありがとうございました。
katoy

2018/09/08 08:13

回答の実行結果と質問文での実行結果が一致しません。 でも質問者にとってはこれがベストアンサーなのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問