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

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

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

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

Q&A

解決済

2回答

11419閲覧

java販売機

uikura

総合スコア37

Java

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

0グッド

1クリップ

投稿2015/06/28 13:10

java初心者です。どうか皆様のお力をお貸しください
自動販売機プログラムを作ろうと考えています。しかしどうしてもおつりの出し方がわかりません。
手順としては
・商品リスト表示
・商品番号を入力
・お金を入力
・おつりを算出
と、考えています

よろしくお願いします

package Hanbaiki;

public class Machine {

private int num; private String drink; private int price; private int money; Machine(int num,String drink,int price){ this.num = num; this.drink = drink; this.price = price; } public void machine() { System.out.println("商品番号:" + num ); System.out.println("商品名:" + drink ); System.out.println("値段:" + price +"円"); }

}

package Hanbaiki;

import java.util.Scanner;

public class Main {
private static int change;

public static void main(String[] args) { Machine machine1 = new Machine(1,"コーラ",120); Machine machine2 = new Machine(2,"お茶",240); Machine machine3 = new Machine(3,"オレンジ",110); machine1.machine(); machine2.machine(); machine3.machine(); System.out.println("商品名番号を押してください"); Scanner scan = new Scanner(System.in); int number = scan.nextInt(); if(number==1){ machine1.machine(); } else if(number==2){ machine2.machine(); } else if(number==3){ machine3.machine(); } System.out.println("お金を入れてください"); int money = scan.nextInt(); } }

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

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

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

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

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

guest

回答2

0

ソース見ると「selected」変数は、switch文で商品番号(1~3)に
対応したMachineクラスのオブジェクト(machine1~machine3)を
格納する為の変数ですね。

「商品番号1」選択時の動作を例にすると
selected = machine1;
selected.machine();
は、
machine1.machine();
と同じ動作となります。

このようにすることで、商品番号選択後に条件文(if/switch)で
machine1~machine3毎の処理を記述しなくても済むので、
すっきりしたソースコードが書けます。

投稿2015/06/28 21:27

horohoro

総合スコア490

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

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

uikura

2015/06/28 22:19

丁寧にありがとうございます。理解できました!またなにかあればよろしくお願いします
guest

0

ベストアンサー

Machineクラスに,入れた金額を受け取ってお釣りを算出するメソッドをつければいいと思います.

lang

1//Machineクラス内 2public int change(int money){ 3 return money - price; 4}

また商品選択にはif-elseよりもswitchを使ったほうがいいと思います.
更にここで選んだMachineオブジェクトは複数回使うので,「選んだもの」として保持させたほうがいいかもしれません.

lang

1package Hanbaiki; 2 3import java.util.Scanner; 4 5public class Main { 6 private static int change; 7 8 public static void main(String[] args) { 9 Machine machine1 = new Machine(1,"コーラ",120); 10 Machine machine2 = new Machine(2,"お茶",240); 11 Machine machine3 = new Machine(3,"オレンジ",110); 12 13 14 machine1.machine(); 15 machine2.machine(); 16 machine3.machine(); 17 18 System.out.println("商品名番号を押してください"); 19 20 Scanner scan = new Scanner(System.in); 21 int number = scan.nextInt(); 22 Machine selected = null; 23 switch(number){ 24 case 1: 25 selected = machine1; 26 break; 27 case 2: 28 selected = machine2; 29 break; 30 case 3: 31 selected = machine3; 32 break; 33 } 34 if(selected == null){ 35 System.out.println("1-3の数字を入力して下さい"); 36 return; 37 } 38 selected.machine() 39 System.out.println("お金を入れてください"); 40 int money = scan.nextInt(); 41 int rest = selected.change(money); 42 if(rest >= 0) 43 System.out.println("お釣りは" + rest + "円です"); 44 else 45 System.out.println("お金が足りません"); 46 47 } 48} 49

投稿2015/06/28 13:34

編集2015/06/28 15:13
swordone

総合スコア20649

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

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

uikura

2015/06/28 16:38

ありがとうございます!本当に助かりました。あと一つ質問なのですが所々でてくる 「selected」とはどうゆう意味でしょうか?質問ばかりですみません、回答よろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問