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

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

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

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

Q&A

解決済

4回答

1507閲覧

食べる人を作っています。

tanaka002

総合スコア22

Java

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

0グッド

0クリップ

投稿2019/08/22 00:45

編集2019/08/23 14:20

java

1`public class EatMan { 2 3 //名前 4 private String name; 5 6 //丼 7 private String foodName; 8 9 //個数 10 private int food; 11 12 13 public EatMan(String name){ 14 this.name = name; 15 System.out.println(〇〇+ this.name + "です。"); 16 } 17 18 19 public void eat(String something , int num){ 20 System.out.println(); 21 22 this.foodName = something; 23 24 for( int i = 0; i < num; i++){ 25 26 if(this.food >= 3){ 27 28 29 } else if( this.food < num ){ 30 this.food++; 31 32 System.out.println(this.name + "は" + this.foodName + "を食べました。" ); 33 } 34 } 35 36 if ( this.food>= 3 ){ 37 38 System.out.println(" 39 403つ食べた時点でお腹いっぱいと表示をさせます。 41しかし、Foodは5つあります。 42 43表示はあっているのですが、何が間違っているのか自分で理解ができていません。 44なにかいただけたら助かります。 45 46回答としては 47ーーーーーーーーーーーー 48丼を食べました。 49丼を食べました。 50丼を食べました。 51食べれません。 52↓表示しない 53 54:3個食べました 55 56ーーーーーーーーーーーー 57 58 59このような形になればいいです。

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

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

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

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

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

m.ts10806

2019/08/22 00:46

コードはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/help#about-markdown >表示はあっているのですが、何が間違っているのか 結局どうなればクリアとなるのでしょうか
azuapricot

2019/08/22 00:49

「この場合で食べ物はFoodは3つしか食べれないです。 3つ食べた時点でお腹いっぱいと表示をさせます。 しかし、Foodは5つあります。 表示はあっているのですが、何が間違っているのか自分で理解ができていません。」 何が言いたいのかよくわかりません。結局やりたいことはなんですか?
m.ts10806

2019/08/22 00:53

良く見てください。 ```lang-言語名 テキスト ``` `3つです。 他の質問や回答を見てどのようになるべきなのか確認しておいてください (質問編集画面ではプレビュー確認できます)
azuapricot

2019/08/22 01:05

「表示はあっているのですが」 表示があっているなら間違ってないんじゃないですか? 今どういう出力になるんですか?
guest

回答4

0

よくわかんなかったんで食べる人作ってみました

Java

1public class Main { 2 public static void main(String[] args) throws Exception { 3 // 名前と胃袋の限界値を指定 4 EatMan eatMan = new EatMan("太郎", 5); 5 // カツ丼を4個食べる 6 eatMan.eat("カツ丼", 4); 7 } 8} 9 10class EatMan { 11 12 //名前「小林」 13 private String name; 14 15 //かつ丼 16 private String foodName; 17 18 //胃袋 19 private int stomach; 20 21 //個数カウント 22 private int food; 23 24 //コンストラクタ 25 public EatMan(String name, int stomach){ 26 this.name = name; 27 this.stomach = stomach; 28 System.out.println("食いしん坊の" + this.name + "です。胃袋の限界値は" + this.stomach + "です。"); 29 30 } 31 32 //メソッド 33 34 public void eat(String something , int num){ 35 this.foodName = something; 36 37 while (true) { 38 // 胃袋判定 39 if (this.food >= this.stomach) { 40 System.out.println("もうお腹いっぱい!"); 41 // 最終出力 42 System.out.println(this.name + "は" + this.foodName + "を" + this.food + "個食べました。"); 43 break; 44 } 45 46 // まだ食べれるから食べる 47 System.out.println(this.name + "は" + this.foodName + "を食べました。" ); 48 this.food++; 49 } 50 } 51}

投稿2019/08/22 01:23

azuapricot

総合スコア2341

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

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

m.ts10806

2019/08/22 02:13

この人のキャパシティ(胃袋)は必要不可欠な要素ですね。
azuapricot

2019/08/22 02:17

胃袋だって人それぞれですよね(皆大食いってわけじゃない)
guest

0

//食べることを繰り返す。 for(int i = 0; i <= num;i++){               //食べた回数をカウント this.food++; System.out.println(this.name + "は" + this.foodName + "を食べました。" );              //三杯までしか食べれない条件を指定 if(this.food >= 3){ System.out.println("もうお腹いっぱい!");                   //条件が達成したら繰り返しを終了する。 break; }コード

yamap_55のを参考にヒントを得てこのような形で回答ができました!!

本当にありがとうございます!
質問がへたくそで本当に申し訳ございません。

投稿2019/08/22 05:35

編集2019/08/22 05:40
tanaka002

総合スコア22

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

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

0

ベストアンサー

質問の内容がよくわからないので色々想定して回答させて頂きます。
質問の意図が異なっていましたら、質問文に記載して頂ければと思います。

表示はあっているのですが、何が間違っているのか自分で理解ができていません。
なにかいただけたら助かります。

ここから予想するに5回ループするはずなのに3回しかループしていないように見える。それは何故か?
っという質問と想定しました。

これに関しては4回目以降のループは「if(this.food >= 3){」に入るので、何も表示されていないだけで、ループとしては回数分回っています。

回答としては
ーーーーーーーーーーーー
かつ丼を食べました。
かつ丼を食べました。
かつ丼を食べました。
もうお腹いっぱい!
↓表示しない

かつ丼:3個食べました

ーーーーーーーーーーーー

このような形になればいいです。

ここを見ると「もうお腹いっぱい!」の後に空行が出力されて欲しい。どのようにすればよいか?
っという質問と想定しました。

これに関しては下記にある「 System.out.println();」を除去して、「if(this.food >= 3){」の中に入れれば解決します。

java

1 public void eat(String something , int num){ 2 // System.out.println(); ※コメントアウト 3 4 this.foodName = something; 5 6 for( int i = 0; i < num; i++){ 7 8 //胃袋の限界値だと思ってます。 9 if(this.food >= 3){ 10 System.out.println(); // 追加 11 //限界より個数の方が多ければ限界値まで食べる。 12 } else if( this.food < num ){ 13 this.food++; 14 System.out.println(this.name + "は" + this.foodName + "を食べました。" ); 15 } 16 } 17 //限界値より個数の方が大きければ限界値で満腹。 18 if (this.food>= 3){ 19 System.out.println("もうお腹いっぱい!"); 20 } 21 }

投稿2019/08/22 01:19

yamap55

総合スコア1376

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

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

0

お腹がいっぱいなときは、breakあるいはreturnしてループから抜ければ良いでしょう。
なお、満腹判定はループ先頭に置くのが楽です。


今後複数種類の食事をできるように拡張したいのなら、連想配列の活用を検討すると良いです。

投稿2019/08/22 01:06

LouiS0616

総合スコア35660

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問