[Java] 纯文本查看 复制代码 import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Scanner;
/**
*
* a.在项目根目录下手动创建food.txt文件(某饭店菜单),
*
* 菜名-价格-折扣(比如:0.8是8折,1代表没有折扣)文件内容如下:
*
* 京酱肉丝-28-0.8
*
* 锅包肉-48-0.6
*
* 皮蛋豆腐-12-0.9
*
* 烧茄子-15-1
*
* 水煮肉片-38-0.5
*
* 拍黄瓜-10-1
*
* 大盘鸡-56-0.9
*
* b.自定义Food类,属性:菜名(String),价格(int),折扣(double),生成对应的set/get方法,满参构造
*
* c.创建Test测试类在main方法中利用流读取food.txt文件中的内容,并且生成对应的Food对象,存放到任意集合中
*
* d.提示用户输入菜名,直到用户输入“已点完”(可以重复点同一道菜),输出应付的餐费(单个菜品价格=原价*折扣)
*
* PS:如果用户输入不存在的菜名则提示用户重新输入;
*
* 示例:
*
* 控制台提示: 请输入菜名: 用户输入: 大盘鸡 控制台提示: 请输入菜名: 用户输入: 皮 控制台提示: 本店没有这道菜,请重新输入 用户输入: 皮蛋豆腐
* 控制台提示: 请输入菜名 用户输入: 已点完 控制台提示: 您点了【大盘鸡,皮蛋豆腐】一共消费:61.20元
*
*/
public class Demo {
public static void main(String[] args) throws IOException {
LinkedHashMap<String, Food> linkedHashMap = new LinkedHashMap<String, Food>();
FileReader fileReader = new FileReader("food.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
for (String readLine = null; (readLine = bufferedReader.readLine()) != null;) {
String[] split = readLine.split("-");
Food food = new Food(split[0], Integer.parseInt(split[1]), Double.parseDouble(split[2]));
linkedHashMap.put(split[0], food);
}
bufferedReader.close();
ArrayList<Food> orderDishes = new ArrayList<Food>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入菜名");
String line = scanner.nextLine();
if ("已点完".equals(line)) {
break;
} else {
if (linkedHashMap.containsKey(line)) {
orderDishes.add(linkedHashMap.get(line));
} else {
System.out.println("本店没有这道菜,请重新输入菜名");
}
}
}
scanner.close();
/* 控制台提示: 您点了【大盘鸡,皮蛋豆腐】一共消费:61.20元 */
System.out.print("您点了【");
double sum = 0;
for (int i = 0; i < orderDishes.size(); i++) {
Food food = orderDishes.get(i);
String name = food.getName();
sum += food.getPrice() * food.getDiscount();
if (i == orderDishes.size() - 1) {
System.out.printf("%s】一共消费:%.2f元\n", name,sum);
} else {
System.out.print(name + ",");
}
}
}
}
class Food {
private String name;
private int price;
private double discount;
public Food(String name, int price, double discount) {
super();
this.name = name;
this.price = price;
this.discount = discount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public double getDiscount() {
return discount;
}
public void setDiscount(double discount) {
this.discount = discount;
}
@Override
public String toString() {
return "Food [name=" + name + ", price=" + price + ", discount=" + discount + "]";
}
} |