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

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

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

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

Q&A

2回答

4718閲覧

javaで1~n段目までのピラミッドを作る

KenKun

総合スコア12

Java

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

0グッド

2クリップ

投稿2017/08/25 06:59

編集2017/08/30 08:46

なんとか、実行可能なプログラムを作成することができました。
もっと、軽量にできるアドバイスありますか?
あれば、コメントよろしくお願いいたします!!

import java.io.*;

public class Kadai5_3_5{
public static void main(String[]args)throws IOException{
BufferedReader br = new
BufferedReader (new InputStreamReader(System.in));

System.out.println("段数を入力してください"); int dan = Integer.parseInt(br.readLine()); int input = 1 ; int b = 0 ; int c = 0 ; int count = 0 ; int count_a = 0 ; if (dan >= 2){ for (int i = 0 ; i != dan ; i++){ for ( ; b != dan ; b++){ System.out.print(" "); } count++ ; b = count ; for (int senter = 0 ; senter != input ; senter++){ System.out.print("*"); } input = input + 2 ; for ( ; c != dan ; c++){ System.out.print(" "); } count_a ++ ; c = count_a ; System.out.println(""); } }else { System.out.println("2以上の整数を入力してください"); }

}
}

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

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

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

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

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

swordone

2017/08/25 07:01

丸投げかつ本文なし、これでは回答は付きませんよ。
LouiS0616

2017/08/25 07:01

内容が丸投げに過ぎると思います。現状書いているコード(エラーだらけでもかまいません)を提示するか、わかる範囲でどのような処理をすればよいのか書いてみてください。
m.ts10806

2017/08/25 07:06 編集

「プログラム ピラミッド」で検索すると結構色々やり方が出てくるので、そちらを参考に。言語が違いますがteratail内でも既出の質問ですね。
KenKun

2017/08/25 08:45

コマンドプロンプトで実行する場合です
LouiS0616

2017/08/25 09:02

とりあえず自分でやりましょうよ。わからないところは聞いてください。
LouiS0616

2017/08/25 09:03

なんの課題か知りませんが、プログラミング自体の講義は受けているのですよね?そこで勉強したことを愚直に試せば大方完成すると思いますが。
koronatail

2017/08/25 09:14

調査したこと・試したことを記入するようメッセージが出ているのが見えますでしょうか。質問を見ている人からすると何が分からないのか分からないので、自分で試しに作ったコードを載せてください。プログラムを1から作ってもらう場所ではないです。
FoolHotari

2017/08/28 00:21

課題は自分でやってなんぼだと思うのですが、正直に言ってこれぐらいの課題ができないようではプログラミング自体を諦めたほうがよさそうです。
LouiS0616

2017/08/28 10:23 編集

最低限質問の形式になったようですので、低評価は取り消しました。しかし、編集してほしい点があと二点あります。第一は、マークダウン記法の導入です。私の回答を見て貰うとわかるかと思いますが、コードを見やすく表示する機能があります。コードをバッククオート三つで括ってください。第二は、ご提示のコードで上手くいくと思った理由です。こいつがあると、何が分かっていないのか推測しやすくなるので、回答もしやすいです。
LouiS0616

2017/08/28 08:29

あとは実行のイメージですね。一言でピラミッドと言っても色々想像できますから。画像を貼るのが手っ取り早いです。
guest

回答2

0

元の回答

そもそもの目的について
私の想像する範囲では、次の三パターンのいずれかですかね。

(1) (2) (3) | x | x | x | | xx | xx | xxx | | xxx | xxx | xxxxx | | xxxx | xxxx | xxxxxxx | | xxxxx | xxxxx | xxxxxxxxx | | xxxxxx | xxxxxx | xxxxxxxxxxx |

各パターンの難易度と解法のヒント

パターン1
おそらくもっとも簡単。単にfor文の使い方を聞いてるだけのような問題。
n個のxを出力するためには、次のように書けばよい。

Java

1for(int i = 0; i < n; i++) { 2 System.out.print("x"); 3}

パターン2
次に簡単。出力する空白の幅について検討する必要があるだけ。算数の問題。
五段のとき、1段目は4個の、2段目は3個の、... 5段目は0個の空白が必要。

パターン3
この中では最も応用的だが、やっぱり算数の問題。
必要な空白と、必要なxの数をそれぞれ計算してやればよい。

追記

動作するプログラムが完成したようで何よりです。
質問者様が書かれたプログラムの描写部を、例えば次のように簡略化できます。

Java

1for (int i = 0 ; i < dan ; i++){ 2 for (int j = i ; j < dan ; j++){ 3 System.out.print(" "); 4 } 5 for (int j = 0 ; j < 2*i + 1 ; j++){ 6 System.out.print("*"); 7 } 8 9 System.out.println(""); 10}

for文の使い方が全体的に甘いです。まあ、これは慣れが大きいんですけどね。


また、こんなstaticメソッドを定義しても便利でしょう。

Java

1private static void printChars(char moji, int len) { 2 for (int i = 0; i < len; i++) { 3 System.out.print(moji); 4 } 5}

使い方はご自身で考えてみてください。

重要

コードはバッククオート三つで括ってください。
よくわからない場合は、マークダウン記法について調べてみてください。
私の回答のように、コードが見やすく表示されます。
マークダウン記法を用いていない質問には、回答しない方針の方もいらっしゃいます。

また、今回の質問である程度わかったかと思いますが、teratailでは丸投げな質問は歓迎されません。
質問テンプレートに従うか、最低限次の点を明確にしてください。

  • そもそも何をしたいのか
  • 環境は何か(Windows/Mac? Eclipse/NetBeans? etc.)
  • 自分自身でどのような方法を試してみたか
  • エラーの具体的な状況(コンパイルできない?実行中落ちる?結果が想定通りでない?)

エラーメッセージや不具合のスクリーンショットがあるとなお良いです。

  • なんで上手くいかないと考えられるのか(分かる範囲で結構です)

当初、このすべてが欠落していました。

teratailでは、低評価が多い質問はアクティブリストから抹消されます。
つまり、回答が減るのです。
ご自身の理解の整理のためにも、迅速な解決のためにも、良い質問を心掛けてください。

投稿2017/08/28 09:26

編集2017/08/30 09:17
LouiS0616

総合スコア35660

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

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

KenKun

2017/08/29 06:39

1段目の出力は、それ以降の段と同じループの条件で実行可能ですか? 他の条件じゃないと、できそうにないのですが、、
LouiS0616

2017/08/29 06:41

一段目だけに特段の配慮が必要、ということはありません。 逆に言うと、他の条件だと出来たんですかね?
LouiS0616

2017/08/29 06:43

ついでに、結局どの出力イメージなんでしょうか。
guest

0

試しにやったのは、あるのですがまったくわかりません。

import java.io.*;

public class Kadai5_3_5{
public static void main(String[]args)throws IOException{
BufferedReader br = new
BufferedReader (new InputStreamReader(System.in));

System.out.println("段数を入力してください"); int dan = Integer.parseInt(br.readLine()); if (dan >= 1){ int dan_a = ((dan * dan) - 1) / 2 ; int dan_b = dan_a ; System.out.print(dan_a); System.out.print("!"); System.out.print(dan_b); }else { System.out.println("1以上の整数を入力してください"); }

}
}

投稿2017/08/28 08:18

KenKun

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問