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)读入五个浮点数?”