JulieJulie_ 2021-03-13 11:34 采纳率: 62.5%
浏览 69
已结题

初学Java。问题已经在代码段里注释了!求大佬援助!!

//直接照抄书上的代码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
  • 写回答

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);
        }
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日

悬赏问题

  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,