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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

4回答

5501閲覧

javaでひし形の作成

next_door

総合スコア18

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2015/05/27 08:05

編集2015/05/27 08:07

今eclipseでjavaの勉強をしているのですがある問題が解けません。
それはキーボードから奇数を入力して例えば3なら
_■
■_■
_■

と表示させ、5なら
__■
_■_■
■___■
_■_■
__■

と表示させるものです。
プログラムは自分で考えたいのですがまったくわかりません。
ヒントをいただけると幸いです。

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

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

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

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

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

guest

回答4

0

プログラムは自分で考えたいのですが

→すばらしいと思います!頑張ってください!

ロジックを考えると以下のようになると思います。
・入力値(以下X)分ループ
・一番上の先頭""の数は、X/2です(例:5/2=2.5=2(intでは0.5は切り捨てられます))
・二番目の先頭"
"の数は、(X/2)-1です。
・三番目の先頭""の数は、(X/2)-2です。
・真ん中の先頭"
"の数は、もちろん0。
・各段の間の"_"の数は、0,1,3,5,7・・・と上がってX-2で折り返します。

これらをまとめて、"_"の数を求めるにはどういうコード(式)を書けばいいか考えてみてください。

参考になれば幸いです。

投稿2015/05/27 08:42

runun

総合スコア305

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

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

next_door

2015/05/27 10:06

回答ありがとうございます。 じっくり考えてみたのですがやっぱりわかりません。。。 _を減らすfor文は書けたのですが■を表示させるif文■のあとに_を表示させることができません。。。
swordone

2015/05/27 12:48

このコメントの意味がわからないので,どういうfor文を書いたのか, 質問に追記していただけるとありがたいです.
guest

0

過去に同じような質問が投稿されていたようです。
こちらを参考にしてみてはいかがでしょう?

javaの繰り返しに関する問題です

投稿2015/05/27 08:37

f-hanako

総合スコア159

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

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

0

入力値から繰り返しの数を計算してみましょう。
繰り返しの中で、ループカウンターの数から、■の左の_を計算してみましょう。

三角形で考えてみると少し楽になるかも知れません。

投稿2015/05/27 08:34

argius

総合スコア9390

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

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

0

ベストアンサー

①先頭の""を出力
②"■"を出力
③間の"
"を出力(最初と最後の行はやらない)
④2つ目の"■"を出力(最初と最後の行はやらない)
⑤①~④を入力された奇数分行う。

ちょっと長ったらしくなって、あまりスッキリしないコードですが、
ヒントのコードをどうぞ。★マークの所を考えてみてください。

lang

1 void test(int input){ 2 int cnter_count = 0; // 間に入れる"_"の数 3 int head_count = input/2; // 先頭に入れる"_"の数 4 Boolean returnFlag = false; // 折り返しフラグ 5 string text = ""; 6 7 for (int i=0; i<input; i++) { 8 9 for(int j=0; j<head_count; j++) { 10 // ★先頭"_"をtextに追加 11 } 12 13 // ★1つ目の"■"をtextに追加 14 15 if(cnter_count != 0){ 16 for(int k=0; k<cnter_count; k++) { 17 // ★間"_"をtextに追加 18 } 19 // ★2つ目の"■"をtextに追加 20 } 21 if(cnter_count == input-2){ 22 returnFlag = true; // 折り返しフラグ true 23 } 24 if(returnFlag){ 25 // ★先頭"_"の数を1つ増やす 26 if(cnter_count == 1){ 27 // ★間"_"の数を減らす(最後だけ1つで、あとは2つづつ減らす) 28 }else{ 29 // ★間"_"の数を減らす(最初だけ1つで、あとは2つづつ減らす) 30 } 31 }else{ 32 // ★先頭"_"の数を1つ減らす 33 if(cnter_count == 0){ 34 // ★間"_"の数を増やす(最初だけ1つで、あとは2つづつ増やす) 35 }else{ 36 // ★間"_"の数を増やす(最初だけ1つで、あとは2つづつ増やす) 37 } 38 } 39 // ★改行をtextに追加 40 } 41 // ★textを出力 42 }

投稿2015/05/28 04:55

runun

総合スコア305

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問