お菓子屋さん(ArrayList練習)

Java

お題

簡単なお題でArrayListの練習をしよう。

実行例

お菓子の情報を入力していって、合計を求める。途中お菓子名にeまたはEが入力されるとお菓子登録を抜ける

菓子名>>キャベツ太郎
価格>>30
菓子名>>どんどん焼き
価格>>20
菓子名>>うまい棒
価格>>10
菓子名>>チロルチョコ
価格>>20
菓子名>>e
---お菓子一覧---
菓子名:キャベツ太郎,価格:30円
菓子名:どんどん焼き,価格:20円
菓子名:うまい棒,価格:10円
菓子名:チロルチョコ,価格:20円
合計で80円だよ!

手順


◯新規クラスSnackMain.javaを作成する。内容は以下

public class SnackMain {

	public static void main(String[] args) {
		

	}

}

◯SnackMainクラスの下にSnackクラスを作成する。記述は以下

public class SnackMain {

	public static void main(String[] args) {
		

	}

}
class Snack{
	
}

以下はSnackクラスに記述していくこと

◯フィールド変数
String name
int price

◯コンストラクタ
nameとpriceを初期化するコンストラクタ

◯メソッド
void showInfo(){}
インスタンスの情報を表示する。以下はキャベツ太郎の例
菓子名:キャベツ太郎,価格:30円

mainメソッド内の作成

◯Scanner インスタンス scを作成する
◯ArrayListインスタンスsnacksを作成する
◯while(true){}の無限ループを作成する

以下はwhileループの中に記述
◯[菓子名>>]と改行なしに表示
◯キーボードからの入力を変数 name で受け取る
◯if文でもし、nameがeかEのときにループをbreakする処理を書く
◯[価格>>]と改行なしに表示
◯キーボードからの入力を変数priceで受け取る
◯2つの情報をもとにSnackインスタンスを作成し、リスト(snacks)に追加する

以下はwhileループの外に記述
◯[–お菓子一覧–]と出力
◯合計を管理する変数 int sum を 0で初期化
◯拡張for文を使って、リスト(snacks)からインスタンスを一つずつ取り出す
以下は拡張forの中に記述
◯snackインスタンスがshowInfo()を使って情報表示をする
◯sumにsnackの価格を加算する
以下は拡張forの外に記述
◯合計金額を表示する

解答例

import java.util.ArrayList;
import java.util.Scanner;

public class SnackMain {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in) ;
		ArrayList<Snack> snacks = new ArrayList<>();
		while(true) {
			System.out.print("菓子名>>");
			String name= sc.next();
			if(name.equalsIgnoreCase("E")) {
				break;
			}
			System.out.print("価格>>");
			int price= sc.nextInt();
			Snack snack= new Snack(name,price);
			snacks.add(snack);
		}
		System.out.println("--お菓子一覧--");
		int sum = 0;
		for(Snack s : snacks) {
			s.showInfo();
			sum += s.price;
		}
		System.out.printf("合計は%d円だよ%n", sum);
	}
}
class Snack{
	String name;
	int price;
	Snack(String name,int price){
		this.name=name;
		this.price=price;
	}
	void showInfo() {
		System.out.printf("菓子名:%s,価格%d円%n",this.name,this.price);
	}
}

以下はSnackクラスで合計金額を管理する例

import java.util.ArrayList;
import java.util.Scanner;

public class SnackMain {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in) ;
		ArrayList<Snack> snacks = new ArrayList<>();
		while(true) {
			System.out.print("菓子名>>");
			String name= sc.next();
			if(name.equalsIgnoreCase("E")) {
				break;
			}
			System.out.print("価格>>");
			int price= sc.nextInt();
			Snack snack= new Snack(name,price);
			snacks.add(snack);
		}
		System.out.println("--お菓子一覧--");
		for(Snack s : snacks) {
			s.showInfo();
		}
		System.out.printf("合計は%d円だよ%n", Snack.total);
	}
}
class Snack{
	static int total;
	String name;
	int price;
	Snack(String name,int price){
		this.name=name;
		this.price=price;
		total+=price;
	}
	void showInfo() {
		System.out.printf("菓子名:%s,価格%d円%n",this.name,this.price);
	}
}
Java
スポンサーリンク
シェアする
mjpurinをフォローする
ジョイタスネット

コメント

タイトルとURLをコピーしました