【lesson 3-1】
八百屋を作る。
main() メソッドがあるクラスとは別に同じファイル内に Yaoya クラスを作る。
(同一ファイル内に複数のクラスを記述する場合2つ目のクラスからアクセス修飾子は不要)
Yaoya クラスはインスタンス化しないで利用する。
Yaoya クラスのフィールドに野菜の名前と値段を3つずつ作る。
main() メソッドで入力(1~3)を促して Yaoya クラスのメソッドを呼び出し名前と値段を出力。
(1~3)以外の数値が入力されたら八百屋の店長から冷たくあしらわれる。
解答例へ
【lesson 3-2】
lesson 3-1で作った八百屋を改変していく。
店の品物を1つ増やす。
main() メソッドでは八百屋をインスタンス化し八百屋のメソッドを1回呼ぶだけにする。
店に入ると1回だけ「いらっしゃい!」と言われる。
品物を何度でも買えるようにする。
範囲外の数値が入力されたら買い物終了。
1つも買ってなかったら店を追い出される。
1つでも買っていれば合計金額を示してお会計。
解答例へ
【lesson 3-3】
解答例へ
【lesson 3-4】
解答例へ
【lesson 3-5】
解答例へ
【3-1 解答例】
public class Shopping {
public static void main(String[] args) {
System.out.println("いらっしゃい!何にする?");
System.out.println("入力してください(1~3)");
System.out.println("1:carrot 2:potato 3:onion");
Yaoya.buyVegetable(new java.util.Scanner(System.in).nextInt());
}
}
class Yaoya {
// 値段
static int[] vPrice = {150, 200, 380};
// 名前
static String[] vName = {"carrot", "potato", "onion"};
// 野菜を買うよ!
static void buyVegetable(int n) {
if(n < 1 || 3 < n ) {
System.out.println("冷やかしはやめとくれ");
} else {
n--;
System.out.println(vName[n] + ":" + vPrice[n]);
System.out.println("毎度あり~!");
}
}
}
main() メソッドが static なので Yaoya クラスのメンバ(フィールドとメソッド)はすべて static になる。
問題に戻る
【3-2 解答例】
public class Shopping {
public static void main(String[] args) {
Yaoya y = new Yaoya();
y.introduction();
}
}
class Yaoya {
// フィールド
// 値段
int[] vPrice = {150, 200, 380, 270};
// 名前
String[] vName = {"carrot", "potato", "onion", "mushroom"};
// 合計金額
int totalPrice = 0;
// 挨拶するよ!
void introduction() {
System.out.println("いらっしゃい!");
loop();
}
// 何度でも買えるよ!
void loop() {
while(true) {
System.out.println("何にする?");
System.out.println("入力してください(1~" + vName.length + ")");
System.out.println("1:carrot 2:potato 3:onion 4:mushroom");
int usrInput = new java.util.Scanner(System.in).nextInt();
// 入力が範囲外ならループを抜けるよ!
if(usrInput < 1 || this.vName.length < usrInput) break;
buyVegetable(usrInput);
}
if(this.totalPrice == 0) {
System.out.println("一昨日来やがれ!");
} else {
System.out.println(totalPrice + "円お買い上げ");
System.out.println("今後ともご贔屓に");
}
}
// 野菜を買うよ!
void buyVegetable(int n) {
n--;
System.out.println(this.vName[n] + ":" + this.vPrice[n]);
System.out.println("毎度あり~!");
this.totalPrice += this.vPrice[n];
}
}
Yaoyaクラスはインスタンス化するので static はすべて外す。
Yaoyaクラスのメソッドは1つにまとめても良い。
問題に戻る
【3-3 解答例】
問題に戻る
【3-4 解答例】
問題に戻る
【3-5 解答例】
問題に戻る