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

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

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

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

Q&A

解決済

2回答

1402閲覧

自販機のお釣りを硬貨でだす方法

takuzou

総合スコア3

Java

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

0グッド

1クリップ

投稿2021/11/05 00:54

自動販売機問題

①お金を入れるor飲み物を買う(1 お金を入れる 2 飲み物を買う 3 終了)

  ②飲み物を買う場合
どの飲み物を買いますか(1 水(100円) 2 コーラ(150円) 3 コーヒー(120円):2

    ③お金が足りた場合
コーラを買いました!おつりは〇〇円です。//①に戻る
③お金が足りない場合
お金が足りません!!//①に戻る

  ②お金を入れる場合
何円いれますか(1 1000円 2 500円 3 100円 4 50円 5 10円):4

50円を入れました。現在50円入っています。
続けますか?(1 YES 2 NO):1

    何円いれますか(1 1000円 2 500円 3 100円 4 50円 5 10円):3
100円を入れました。現在150円入っています。
続けますか?(1 YES 2 NO):2 //NOにしたら①に戻る

  ③終了する場合
おつりを出しました (500円玉 〇枚 100円玉 〇枚 50円玉 〇枚 10円玉 〇枚)

前提・実現したいこと

③お釣りを硬貨でだす方法がわかりません。
}のエラーが出るんですけど何処が間違っているか調べてもわかりませんでした良かったら指摘のほうお願いします。

発生している問題・エラーメッセージ

syntax error on token

該当のソースコード

JAVA

import java.util.Scanner;

public class Hello {
public static void main(String[] args){
Scanner stdIn = new Scanner(System.in);
int sum=0;
int owari;
int num;
while(true){
System.out.println(1+":お金を入れる" +2+":飲み物を買う" +3+":終了");
int n = stdIn.nextInt();

if(n==1){ while(owari==1){ System.out.println("何円入れますか"); System.out.println(1+":1000円"+2+":500円"+3+":100円"+4+":50円"+5+":10円"); int num1 = stdIn.nextInt(); if(num1==1){ System.out.println("1000円を入れました"); sum+=1000; } else if(num1==2){ System.out.println("500円を入れました"); sum+=500; } else if(num1==3){ System.out.println("100円を入れました"); sum+=100; } else if(num1==4){ System.out.println("50円を入れました"); sum+=50; } else if(num1==5){ System.out.println("10円を入れました"); sum+=10; } System.out.println(sum+"円入ってます"); System.out.println(1+"yes"+2+"no"); owari =stdIn.nextInt(); continue; } } else if(n==2);{ System.out.println("どの飲み物を買いますか"); System.out.print(+1+": 水(100円)" +2+":コーラ(150円)" +3+ ":コーヒー(120円)"); num = stdIn.nextInt(); } if(num==1){ if(sum>=100);{ System.out.println("水を買いました"); }}else if(sum <100){ System.out.println("お金が足りません"); continue; } else if(num==2){ if(sum>=150){ System.out.println("コーラを買いました"); }}else if(sum <150){ System.out.println("お金が足りません"); continue; } else if(num==3){ if(sum>=120){ System.out.println("コーヒーを買いました"); }}else if(sum <120){ System.out.println("お金が足りません"); continue; } else if(n==3) break; } } }ここのかっこがエラーになります

}
}

試したこと

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

1T2R3M4

2021/11/05 00:59

ご自身で書かれたコードでしょうか。
takuzou

2021/11/05 01:01

学校の課題ですね。 昨日かJavaを学び始めたので見にくいプログラムなのは申し訳ありません
takuzou

2021/11/05 01:01

自分で書いたコードです
BeatStar

2021/11/05 07:08

とりあえず、コードは"<code>"または"<コード>"のボタンを押して出てくるヤツの「中に」書きましょう。今のままでは読みづらいです。句読点無し&改行無しでひらがなのみの文章のようなものです。読めなくはないですがかなり読みづらいです。 質問は編集できるので編集しましょう。 ヒント: https://teratail.com/help/question-tips#questionTips3-3-1
guest

回答2

0

コンパイルエラーの解消だけで良かったようですが、折角書いたので。

java

1package teratail_java.q367840; 2 3import java.util.*; 4 5import teratail_java.q367840.VendingMachine.MoneyUnit; 6import teratail_java.q367840.VendingMachine.Item; 7 8public class Hello { 9 public static void main(String[] args) { 10 VendingMachine vendingMachine = new VendingMachine(); 11 12 try (Scanner scanner = new Scanner(System.in);) { 13 while (true) { 14 System.out.println("1:お金を入れる 2:飲み物を買う 3:終了"); 15 int n = scanner.nextInt(); 16 if (n == 1) { 17 putMoney(vendingMachine, scanner); 18 } else if (n == 2) { 19 buyDrink(vendingMachine, scanner); 20 } else if (n == 3) { 21 break; 22 } 23 } 24 } 25 getChange(vendingMachine); 26 } 27 28 static void putMoney(VendingMachine vendingMachine, Scanner scanner) { 29 int owari; 30 MoneyUnit[] units = MoneyUnit.values(); 31 do { 32 int num = select("何円入れますか", units, scanner); 33 if (0 <= num && num < units.length) { 34 System.out.println(units[num] + "を入れました"); 35 int total = vendingMachine.put(units[num]); 36 System.out.println("現在" + total + "円入ってます"); 37 } 38 System.out.println("続けますか?(1 YES 2 NO):"); 39 owari = scanner.nextInt(); 40 } while (owari == 1); 41 } 42 43 static void buyDrink(VendingMachine vendingMachine, Scanner scanner) { 44 Item[] items = vendingMachine.getHandlingItems(); 45 int num = select("どの飲み物を買いますか", items, scanner); 46 if (0 <= num && num < items.length) { 47 if (vendingMachine.buy(num)) { 48 System.out.println(items[num].name + "を買いました"); 49 System.out.println("残りは" + vendingMachine.getTotal() + "円です"); 50 } else { 51 System.out.println("お金が足りません"); 52 } 53 } 54 } 55 56 static int select(String prompt, Object objects[], Scanner scanner) { 57 System.out.println(prompt); 58 StringJoiner sj = new StringJoiner(" "); 59 for (int i = 0; i < objects.length; i++) { 60 sj.add((i + 1) + ":" + objects[i]); 61 } 62 System.out.println(sj); 63 return scanner.nextInt() - 1; 64 } 65 66 static void getChange(VendingMachine vendingMachine) { 67 Map<MoneyUnit,Integer> change = vendingMachine.change(); 68 if(change.isEmpty()) { 69 System.out.println("おつりはありません"); 70 } else { 71 StringJoiner sj = new StringJoiner(" ", "おつりを出しました (", ")"); 72 for(Map.Entry<MoneyUnit,Integer> entry : change.entrySet()) { 73 sj.add(entry.getKey() + "玉 " + entry.getValue() + "枚"); 74 } 75 System.out.println(sj); 76 } 77 } 78} 79 80class VendingMachine { 81 82 enum MoneyUnit { 83 YEN_1000(1000), 84 YEN_500(500), 85 YEN_100(100), 86 YEN_50(50), 87 YEN_10(10); 88 89 static MoneyUnit[] coins() { 90 return new MoneyUnit[] {YEN_500,YEN_100,YEN_50,YEN_10}; 91 } 92 93 final int amount; 94 MoneyUnit(int amount) { 95 this.amount = amount; 96 } 97 @Override 98 public String toString() { 99 return amount+"円"; 100 } 101 } 102 103 static class Item { 104 final String name; 105 final int price; 106 Item(String name, int price) { 107 this.name = name; 108 this.price = price; 109 } 110 @Override 111 public String toString() { 112 return name+"("+price+"円)"; 113 } 114 } 115 116 private Item[] items = new Item[] { 117 new Item("水", 100), 118 new Item("コーラ", 150), 119 new Item("コーヒー", 120), 120 }; 121 122 private int total = 0; 123 124 int getTotal() { return total; } 125 126 int put(MoneyUnit unit) { 127 return total += unit.amount; 128 } 129 130 boolean buy(int index) { 131 if (total < items[index].price) return false; 132 total -= items[index].price; 133 return true; 134 } 135 136 Item[] getHandlingItems() { 137 return items.clone(); 138 } 139 140 Map<MoneyUnit,Integer> change() { 141 Map<MoneyUnit,Integer> map = new TreeMap<>(); 142 for(MoneyUnit unit : MoneyUnit.coins()) { 143 int count = total / unit.amount; 144 if(count > 0) map.put(unit, count); 145 total %= unit.amount; 146 } 147 total = 0; 148 return map; 149 } 150}

投稿2021/11/09 12:40

jimbe

総合スコア13209

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

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

0

ベストアンサー

}ここのかっこがエラーになります

{ が 20個、} が 22個あります。
対応が分かるように書いてください。

質問では、JAVA という文字列が四角い枠の中にあります。
その JAVA のところに、ソースコードを書いてください。
質問は編集できます。

投稿2021/11/05 03:03

kazuma-s

総合スコア8224

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問