MyBlog1 : 利用数组和for循环写一个控制台小程序

Posted doubleLucky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBlog1 : 利用数组和for循环写一个控制台小程序相关的知识,希望对你有一定的参考价值。

利用数组和for循环写一个控制台小程序

import java.util.Scanner;

/**
 * @Author: 幸幸
 * @Date: 2023/03/23/7:18
 * @Description:利用数组和for循环写一个控制台小程序
 */
public class Myblog1 
    private static final String[] listOfGoods = "1,巧克力豆面包:4.5元\\t", "2,青团子:1.5元\\t", "3,奶粉:36元\\t", "4,薯片:1.5元\\t", "5,小笼包:1.5元\\t", "6,葱油拌面:2.2元\\t", "7,宅の快乐水:2.5元\\t";
    private static final int[] numbersOfgoods = new int[listOfGoods.length];
    private static final double[] priceOfgoods = new double[listOfGoods.length];

    static 
        splitPrice(listOfGoods);
    
    public static void main(String[] args) 
        welcome(numbersOfgoods);
    
    public static void printListOfGoods(String[] listOfGoods)  //打印商品列表
        for (int i = 0; i < listOfGoods.length; i++) 
            System.out.print(listOfGoods[i] + " ");
        
    

    public static void welcome(int[] numbersOfgoods) 
        System.out.println("欢迎来到幸幸的小店,本店今日上新:");
        printListOfGoods(listOfGoods);
        System.out.print("\\n输入  商品序号:数量  就可以采购了\\n");
        Scanner sc = new Scanner(System.in);
        String input = "";
        boolean n = true;
        while (n) 
            System.out.println("按\'k\'继续购物\\t如果要退出please输入\'n\'");
            String continueShopping = sc.next();
            if (continueShopping.equals("n") || continueShopping.equals("N")) 
                n = false;
                printAccount();
             else 
                System.out.println("输入格式  商品序号:数量 例如 1:6 代表1号商品购买6份");
                sc.nextLine(); //嘿嘿,因为nextLine()它会吃掉回车,这样回车的时候默认把回车当作下一行的首字符了,所以这用两次吃掉一次回车
                input = sc.nextLine();
                recordNumbersOfGoods(input, numbersOfgoods);
            
        
    
    private static void printAccount() 
        double bill = 0;
        for (int i = 0; i < listOfGoods.length; i++) 
            bill += numbersOfgoods[i] * priceOfgoods[i];
            if (numbersOfgoods[i] > 0) 
                System.out.println(listOfGoods[i] + "* " + numbersOfgoods[i]);
            
        
        System.out.println("您在本店一共消费 " + bill + "元!\\n" + "祝您天天好心情!欢迎下次光临!");
    
    private static void recordNumbersOfGoods(String input, int[] numbersOfgoods) 
        String[] split = input.split(" "); //一行输入根据空格分成若干份保存在split数组中
        String serialNumber = "";  // 用来记录用户输入的商品序号
        for (int i = 0; i < split.length; i++) 
            String[] temp = split[i].split(":"); //再按照":"将字符串分成2部分,第一部分为商品序号,第二部分为数量,所以temp[1]是数量
            serialNumber = temp[0];
            int trueIndex = Integer.parseInt(serialNumber) - 1; //数组内对应的索引+1 才是商品序号
            int number = Integer.parseInt(temp[1]);//temp[1]是数量
            if (numbersOfgoods[trueIndex] + number < 0) numbersOfgoods[trueIndex] = 0; //用户输入负数代表减少商品数量,但也不能最终订购数量是负数
            else numbersOfgoods[trueIndex] += number;
        
    
    private static void splitPrice(String[] listOfGoods)   //从商品列表中分离价格
        for (int i = 0; i < listOfGoods.length; i++) 
            String[] split1 = listOfGoods[i].split(":");
            String[] split2 = split1[split1.length - 1].split("元");
            String price = split2[0];
            priceOfgoods[i] = Double.parseDouble(price);
        
    

Tips:代码并未捕获用户输入可能引起的异常哦!

以上是关于MyBlog1 : 利用数组和for循环写一个控制台小程序的主要内容,如果未能解决你的问题,请参考以下文章

什么叫“写一个循环(for或者while)读入五个浮点数?”

状压dp终极篇(状态转移的思想)

关于Javascript的学习心得

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

C语言for循环 求1--10阶乘的和

C语言,怎么利用一个循环遍历一个二维数组呀?急!!!