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

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

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

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

Eclipse

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

Q&A

5回答

2946閲覧

do文中のifのfalseから最初に戻りたい

next_door

総合スコア18

Java

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

Eclipse

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

0グッド

1クリップ

投稿2015/06/03 13:33

編集2015/06/03 14:00

lang

1 do{ 2 System.out.println(); 3 System.out.println("投入金額; " + money); 4 System.out.println("購入する商品番号を入力してください。"); 5 System.out.println("1 :" + juice[1] + " " + price[1] + "円"); 6 System.out.println("2 :" + juice[2] + " " + price[2] + "円"); 7 System.out.println("3 :" + juice[3] + " " + price[3] + "円"); 8 System.out.println("4 :" + juice[4] + " " + price[4] + "円"); 9 System.out.print("番号(1~4) (それ以外の数字)>"); 10 int number = sc.nextInt(); 11 System.out.println(); 12 if(number < 1 || 4 < number ){ 13 System.out.print("ご購入ありがとうございました。またのご利用お待ちしております。"); 14 count[number] += 1; 15 break; 16 } 17 if(price[number] < money){ 18 System.out.println("「" + juice[number] + "を購入した"); 19 }else{ 20 System.out.print("購入金額が足りません。"); 21 continue; 22 } 23 }while(money > 120);

do文の中にこういうif文を書いていたのですが結果がfalseの場合でもdoの最初に戻るようにしたいのですがどうすればいいのでしょうか。
breakを使ってみましたがだめでした。

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

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

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

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

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

swordone

2015/06/03 14:02

まず「何をどうするコードなのか」を教えて下さい.そうでないと何のためにどこから戻りたいのかがよくわかりません.
next_door

2015/06/03 14:09

自動販売機のプログラムでjuice[1]〜[4]に飲み物の名前、price[1]〜[4]に飲み物の値段が入っています。 numberで選んだ数字の値段がmoney以上なら購入しその値段をmoneyから引いてまた飲み物選択に戻ります。1〜4以外の数字が選ばれた場合はお釣りを出します(未記入) 例えばお金を入れて4を選んだ場合4は投入金額より高いので購入金額が足りないことを伝えてまた飲み物選択に戻ります。
swordone

2015/06/03 14:26

選んだ商品の値段が所持金以下の場合に所持金から価格を引いて戻るのと,所持金が足りない場合にメッセージを出して戻るのとでは,「戻る」ことに本質的な違いがありますか?
next_door

2015/06/03 14:27

ないと思います。
swordone

2015/06/03 14:33

だとすればこのままでも(continueがなくても)望む動作をするはずですが
next_door

2015/06/03 14:40

なりませんでした。。。
swordone

2015/06/03 14:48

最初からmoneyの値が120未満ということはないですか?
swordone

2015/06/03 14:49

×未満 ○以下
next_door

2015/06/03 14:50

doの上にifがありその場合はdo文に入ってこないようになってます。
swordone

2015/06/03 15:00

それならdo-whileじゃなくてwhile文を使えば上のif文は不要になります.やっぱり全体がわからないとよくわからないので全体を見せてください.
swordone

2015/06/03 15:02

あとループに戻らない実行結果を載せてくれると幸いです
guest

回答5

0

質問内容とコードを見る限り、falseの場合はdoの先頭に戻っていると思いますが

falseの時の
希望しているログと
現状のログ

を記述すると、何を行いたいかがわかると思いますよ

投稿2015/06/04 02:56

YukiMiyatake

総合スコア144

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

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

0

do{
System.out.println();
System.out.println("投入金額; " + money);
System.out.println("購入する商品番号を入力してください。");
System.out.println("1 :" + juice[1] + " " + price[1] + "円");
System.out.println("2 :" + juice[2] + " " + price[2] + "円");
System.out.println("3 :" + juice[3] + " " + price[3] + "円");
System.out.println("4 :" + juice[4] + " " + price[4] + "円");
System.out.print("番号(1~4) (それ以外の数字)>");
int number = sc.nextInt();
System.out.println();
if(number < 1 || 4 < number ){ // if( 1 <= number && number <= 4 ) 私はこっち派
if(price[number] < money){
System.out.println("「" + juice[number] + "を購入した");
System.out.print("ご購入ありがとうございました。またのご利用お待ちしております。");
count[number] += 1;
money -= price[number];
}else{
System.out.print("購入金額が足りません。");
}
} else {
System.out.print("1~4の商品を選んでね♡。");
}
}while(money > 120); // ← 商品の最低価格が120円なら (money >= 120)

これじゃだめですか?

投稿2015/06/04 02:19

MasaakiIrie

総合スコア1021

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

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

0

回答に合わない内容でしたので削除いたしました。

投稿2015/06/03 15:36

編集2015/06/03 16:01
miso

総合スコア68

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

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

swordone

2015/06/03 15:44

情報追加依頼でのやりとりでわかったんですが,やりたいのは ・1-4以外でループ抜ける ・商品選んで払えたら払って商品選択に戻る ・払えなければ足りない旨表示して商品選択に戻る という仕様のようなので,これではないのだと思います.
miso

2015/06/03 15:59

まったくその通りの動きのはずでしたが残念です。
guest

0

さっきとif文が全然違うように思いますが・・・
ifがfalseなら何もしなくてもdoの最初に戻りませんか?

正直このコード見ていて何をしたいのか謎すぎます.

投稿2015/06/03 14:00

swordone

総合スコア20651

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

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

next_door

2015/06/03 14:01

すみません間違いがあったので直しました。
guest

0

その場合はcontinueを使います

投稿2015/06/03 13:44

swordone

総合スコア20651

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

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

next_door

2015/06/03 13:48

ご回答ありがとうございます。 continueを入れてみましたが戻りませんでした。
swordone

2015/06/03 13:49

そうなると何をしたいのかよくわからないので,コード全体を見せていただけないでしょうか.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問