//直接照抄书上的代码25页
import java.util.Scanner;//21年三月十三号的添加a 今日总计需要解决的问题是读取数据,商品顺序的任意输入以及累加,输出语句的改进而不是一条一条的敲 a
public class copy_from_page25
{
public static void main (String[]args)
{
System.out.println("输入商品数量:(目前只有三种商品而且顺序固定)");//但是这样的话商品清单的输出是固定的。a
Scanner scan=new Scanner(System.in);
double pen = 28.0;//钢笔的单价,数据类型双精度浮点型。此处的钢笔已经被赋值为1.
int penNo = scan.nextInt();//钢笔的数量,数据类型整型
double diary = 15.0;
int diaryNo = scan.nextInt();//目前的问题三种产品,顺序固定,模拟生活场景这个还不如你拿计算机敲。a
double Mp3 = 128.0;//要实现的是商品顺序是打乱的,实现商品数量的累加,最后计算总值。同时商品数量是很大的,不可能有一千种商品你就敲一千行代码。a
int Mp3No = scan.nextInt();//预测所有商品的数量都是一样的,那怎么实现同时输入多个达成依次使用呢?(解决)a
double discount = 0.9;//事实证明是自己想多了,显然这个更加人性化。 商品的种类单价是可以通过编号制表储存在表格文件中。需要用的时候读取a
System.out.println("*********消费清单*********");
System.out.println("商品\t" + "单价\t" + "数量\t"+"金额");//\t制表排版
System.out.println("钢笔\t" + pen + "\t" + penNo + "\t" + pen * penNo);//因此此时的不带引号的pen输出为1.
System.out.println("笔记本\t" + diary + "\t" + diaryNo + "\t" + diary * diaryNo);
System.out.println("Mp3\t" + Mp3 + "\t" + Mp3No + "\t" + Mp3 * Mp3No);
System.out.println("会员享受折扣 : 0.9");//无须改进
double All = (pen * penNo + diary * diaryNo + Mp3 * Mp3No) * discount;//待改进
System.out.println("总计金额\t\t" + "¥" + All);//总金额的算术表达或说是逻辑运算
System.out.print("付款金额:");
Scanner pay=new Scanner(System.in);
int Pay = pay.nextInt();//付款金额是在已经计算完商品总价之后.总感觉怪怪的。a
//int Pay = 200;
System.out.println("付款金额\t\t" + "¥" + Pay);
double change = Pay - All;
System.out.println("找零\t\t" + "¥" + String.format("%.2f",change));//这里是实现输出的数据保留小数数量String.format是四舍五入的函数a
int integral = (int)All / 10;//
System.out.println("所获积分\t\t" + integral);
}//其实这个代码都没有实现就是动态输入输出的过程,考虑到学了c的缘故,可以尝试添加输入语句实现这个代码的动态使用。
}//商品有限,超市扫码,静态的是价格,动态的是数量,因此商品输出语句只有一条商品名和单价数量都是自动添加(赋值)a
初学Java。问题已经在代码段里注释了!求大佬援助!!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- summer_du 2021-03-13 16:29关注
哈哈,我看了一下,这样写应该更容易理解。思路都一样,就是先选择商品,再选择数量,一直循环。输入0就结束。这样写是不是容易理解很多?
public class Test { public static void main(String[] args) { System.out.println("商品编号\t\t商品名称\r\n1\t\t\t钢笔\n2\t\t\t笔记本\n3\t\t\tMP3"); Scanner scan = new Scanner(System.in); int number = -1;//接收所有的输入记录 int penNo = 0;//统计所有的铅笔数量 int diaryNo = 0;//统计所有的笔记本数量 int Mp3No = 0;//统计所有的Mp3数量 int currentGoods = 0; while (true) { //选择商品 System.out.println("请选择要购买的商品编号:\t(如需结账,请输入0)"); currentGoods = scan.nextInt(); if (currentGoods == 0) {//输入0结账 System.out.println("结账中......"); break; } switch (currentGoods) { case 1: System.out.println("请输入要购买的钢笔数量"); break; case 2: System.out.println("请输入要购买的笔记本数量"); break; case 3: System.out.println("请输入要购买的Mp3数量"); break; } //选择数量 number = scan.nextInt(); if (number == 0) {//输入0结账 System.out.println("结账中......"); break; } switch (currentGoods) {//根据输入的商品编号,计算总的商品数 case 1: penNo += number; break; case 2: diaryNo += number; break; case 3: Mp3No += number; break; } String msg = ""; if (penNo != 0 || diaryNo != 0 || Mp3No != 0) { msg += (penNo != 0) ? "钢笔:" + penNo + "支;" : ""; msg += (diaryNo != 0) ? "笔记本:" + diaryNo + "台;" : ""; msg += (Mp3No != 0) ? "Mp3:" + Mp3No + "个;" : ""; System.out.println("已加入购物车的商品:" + msg); } } double pen = 28.0;//钢笔的单价,数据类型双精度浮点型。此处的钢笔已经被赋值为1. double diary = 15.0; double Mp3 = 128.0;//要实现的是商品顺序是打乱的,实现商品数量的累加,最后计算总值。同时商品数量是很大的,不可能有一千种商品你就敲一千行代码。a double discount = 0.9;//事实证明是自己想多了,显然这个更加人性化。 商品的种类单价是可以通过编号制表储存在表格文件中。需要用的时候读取a System.out.println("*********消费清单*********"); System.out.println("商品\t" + "单价\t" + "数量\t" + "金额");//\t制表排版 System.out.println("钢笔\t" + pen + "\t" + penNo + "\t" + pen * penNo);//因此此时的不带引号的pen输出为1. System.out.println("笔记本\t" + diary + "\t" + diaryNo + "\t" + diary * diaryNo); System.out.println("Mp3\t" + Mp3 + "\t" + Mp3No + "\t" + Mp3 * Mp3No); System.out.println("会员享受折扣 : 0.9");//无须改进 double All = (pen * penNo + diary * diaryNo + Mp3 * Mp3No) * discount;//待改进 System.out.println("总计金额\t\t" + "¥" + All);//总金额的算术表达或说是逻辑运算 System.out.print("付款金额:"); Scanner pay = new Scanner(System.in); int Pay = pay.nextInt();//付款金额是在已经计算完商品总价之后.总感觉怪怪的。a //int Pay = 200; System.out.println("付款金额\t\t" + "¥" + Pay); double change = Pay - All; System.out.println("找零\t\t" + "¥" + String.format("%.2f", change));//这里是实现输出的数据保留小数数量String.format是四舍五入的函数a int integral = (int) All / 10;// System.out.println("所获积分\t\t" + integral); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 javaweb项目无法正常跳转
- ¥15 VMBox虚拟机无法访问
- ¥15 skd显示找不到头文件
- ¥15 机器视觉中图片中长度与真实长度的关系
- ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
- ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
- ¥15 java 的protected权限 ,问题在注释里
- ¥15 这个是哪里有问题啊?
- ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
- ¥15 texstudio的问题,