编写程序,接收用户输入的信息,选择购买的饮料。可供选择的饮料有:咖啡、矿泉水和可乐。其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。购买可乐时可以选择:买可口可乐还是百事可乐。
分析:
创建Drink总类来让咖啡,可乐,矿泉水来继承。
咖啡有额外的加糖选择,可乐有两种选择,这些可以在制作Drink中使用if 判断后里面加上switch方法来进行执行。
Drink类
定义私有成员name 和 volume,并使用show()方法来对成员变量进行输出。
package SellingMachines;
/*
编写程序实现软料购买:编写程序,接收用户输入的信息,选择购买的饮料。
可供选择的饮料有:咖啡、矿泉水和可乐。
其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。
购买可乐时可以选择:买可口可乐还是百事可乐。
*/
public class Drink {
private String name;
private int volume;
public Drink() {
super();
}
public Drink(String name, int volume) {
super();
this.name = name;
this.volume = volume;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
}
public void show(){
System.out.println("您购买的饮料信息如下:");
System.out.println("名称:"+name);
System.out.println("容量:"+volume);
}
}
Coffee类
因为咖啡类有额外的配料选项,所以需要创建一个新的mixture属性,来记录所需要的添加的配料
package SellingMachines;
public class Coffee extends Drink{
private String mixture;//添加物
public Coffee() {
super();
}
public Coffee(String name,int volume, String mixture) {
super(name,volume);
this.mixture = mixture;
}
public String getMixture() {
return mixture;
}
public void setMixture(String mixture) {
this.mixture = mixture;
}
public void show(){
System.out.println("您购买的饮料信息如下:");
System.out.println("名称:"+super.getName());
System.out.println("添加配料:"+this.getMixture());
System.out.println("容量:"+super.getVolume());
}
}
Coco类
package SellingMachines;
//可乐
public class Coco extends Drink {
public Coco(){};
public Coco(String name, int volume){
super(name,volume);
}
@Override
public void show() {
System.out.println("你购买的饮料信息如下");
System.out.println("姓名:"+ getName());
System.out.println("容量:"+ getVolume());
}
}
Water类
package SellingMachines;
public class Water extends Drink{
public Water(){};
public Water(String name,int volume){
super(name,volume);
}
public void show(){
System.out.println("您购买的饮料信息如下:");
System.out.println("名称:"+super.getName());
System.out.println("容量:"+super.getVolume());
}
}
DrinkFactory类
前面说过,因为咖啡和可乐多了一些选择,所以在这里使用If和switch来进行判断。
package SellingMachines;
import java.util.Scanner;
public class DrinkFactory {
public static Drink getDrink(String no) {
Scanner input = new Scanner(System.in);
Drink drink = null;
String name;
if ("1".equals(no)) {
System.out.println("请输入购买容量:");
int volume = input.nextInt();
System.out.println("请问是否要配料(1、加糖 2、加奶 3、什么也不加)");
int choice = input.nextInt();
String mixture;
switch (choice) {
case 1:
mixture = "加糖";
break;
case 2:
mixture = "加奶";
break;
default:
mixture = "什么一个不加";
}
drink = new Coffee("咖啡", volume, mixture);
} else if ("2".equals(no)) {
System.out.println("请输入购买容量:");
int volume = input.nextInt();
System.out.println("请输入你需要购买的可乐:1.百事可乐 2.可口可乐");
int choose = input.nextInt();
switch (choose){
case 1:
drink = new Coco("百事可乐",volume);
break;
case 2:
drink = new Coco("可口可乐",volume);
break;
}
} else if ("3".equals(no)) {
System.out.println("请输入购买容量:");
int volume = input.nextInt();
drink = new Water("矿泉水",volume);
}
return drink;
}
}
Test类
llingMachines;
import java.util.Scanner;
public class TestDrink {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请选择饮料(1.咖啡 2 可乐 3 矿泉水):");
String choice = input.next();
Drink drink = DrinkFactory.getDrink(choice);
drink.show();
}
}