实现购物结算及小票打印功能


怎么打印这个循环的小票单

Scanner input = new Scanner(System.in);
String name = ""; //商品名字
double jiage = 0.0; //商品价格
int c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0, c6 = 0, c7 = 0,
b = 0, a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0;
System.out.print("请选择;购买的商品编号:\n" +
"1:海尔电冰箱\n" +
"2:海尔空调\n" +
"3:海尔电视机\n" +
"4:美的抽烟机\n" +
"5:海尔洗衣机\n" +
"6:美的空调\n" +
"7:美的微波炉\n" +
"******************************\n\n");
System.out.print("\t请输入会员号:");
int a = input.nextInt();
String yas = "y";
do {
System.out.print("\t请输入商品编号:");
b = input.nextInt();
switch (b) {
case 1:
name = "海尔电冰箱";
jiage = 2999.0;
System.out.print("\t请输入数目:");
c1 = input.nextInt();
a1 += c1;
break;
case 2:
name = "海尔空调";
jiage = 1999.0;
System.out.print("\t请输入数目:");
c2 = input.nextInt();
a2 += c2;
break;
case 3:
name = "海尔电视机";
jiage = 1499.0;
System.out.print("\t请输入数目:");
c3 = input.nextInt();
a3 += c3;
break;
case 4:
name = "美的抽烟机";
jiage = 999.0;
System.out.print("\t请输入数目:");
c4 = input.nextInt();
a4 += c4;
break;
case 5:
name = "海尔洗衣机";
jiage = 1899.0;
System.out.print("\t请输入数目:");
c5 = input.nextInt();
a5 += c5;
break;
case 6:
name = "美的空调";
jiage = 1699.0;
System.out.print("\t请输入数目:");
c6 = input.nextInt();
a6 += c6;
break;
case 7:
name = "美的微波炉";
jiage = 1299.0;
System.out.print("\t请输入数目:");
c7 = input.nextInt();
a7 += c7;
default:
System.out.println("\t选择无效");
break;
}
System.out.print("\t是否继续购物(y/n):");
yas = input.next();
} while ("y".equals(yas));
System.out.print("
* * * * * * * * * * * * * * 消费清单 * * * * * * * * * * * * * * * \n" +
"物品\t\t\t\t单价\t\t\t\t个数\t\t\t\t金额\n");

可以定义几个数组来存放个商品的名字,单价,数量,各商品总金额,最后打印小票时用循环遍历各数组信息打印即可,然后加上打印总商品金额。


修改如下:

import java.util.Scanner;

public class PrintTicketsTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        String name = ""; //商品名字
        double jiage = 0.0; //商品价格
        
        int c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0, c6 = 0, c7 = 0,b = 0;
        double a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0;
        
        //定义下面几个数组的原因是便于后面用循环来打印信息
        int nums[] = new int[] {0,0,0,0,0,0,0};//各商品的数量
        double totalMoney[] = new double[] {0,0,0,0,0,0,0}; //各商品总的金额
        double allMoneys=0;  //所有购买商品的价格
         String goodsName[]= new String[]{"海尔电冰箱","海尔空调","海尔电视机","美的抽烟机"
                ,"海尔洗衣机","美的空调","美的微波炉"}; //七个商品的名字
        double prices[] = new double[] {2999.0,1999.0,1499.0,999,1899,1699.0,1299.0}; //各商品的价格
        System.out.print("请选择;购买的商品编号:\n" +
        "1:海尔电冰箱\n" +
        "2:海尔空调\n" +
        "3:海尔电视机\n" +
        "4:美的抽烟机\n" +
        "5:海尔洗衣机\n" +
        "6:美的空调\n" +
        "7:美的微波炉\n" +
        "******************************\n\n");
        System.out.print("\t请输入会员号:");
        int a = input.nextInt();
        String yas = "y";
        do {
            System.out.print("\t请输入商品编号:");
            b = input.nextInt();
            switch (b) {
            case 1:
            name = "海尔电冰箱";
            jiage = 2999.0;
            System.out.print("\t请输入数目:");
            c1 = input.nextInt();
            a1 = c1*jiage;
            nums[0]+=c1;  //后面依次在数组存储各商品的总数量
            totalMoney[0]+=a1;  //后面依次在数组相应位置存储各商品的总价格
            break;
            case 2:
            name = "海尔空调";
            jiage = 1999.0;
            System.out.print("\t请输入数目:");
            c2 = input.nextInt();
            a2 = c2*jiage;
            nums[1]+=c2;
            totalMoney[1]+=a2;
            break;
            case 3:
            name = "海尔电视机";
            jiage = 1499.0;
            System.out.print("\t请输入数目:");
            c3 = input.nextInt();
            a3 = c3*jiage;
            nums[2]+=c3;
            totalMoney[2]+=a3;
            break;
            case 4:
            name = "美的抽烟机";
            jiage = 999.0;
            System.out.print("\t请输入数目:");
            c4 = input.nextInt();
            a4 = c4*jiage;
            nums[3]+=c4;
            totalMoney[3]+=a4;
            break;
            case 5:
            name = "海尔洗衣机";
            jiage = 1899.0;
            System.out.print("\t请输入数目:");
            c5 = input.nextInt();
            a5 = c5*jiage;
            nums[4]+=c5;
            totalMoney[4]+=a5;
            break;
            case 6:
            name = "美的空调";
            jiage = 1699.0;
            System.out.print("\t请输入数目:");
            c6 = input.nextInt();
            a6 = c6*jiage;
            nums[5]+=c6;
            totalMoney[5]+=a6;
            break;
            case 7:
            name = "美的微波炉";
            jiage = 1299.0;
            System.out.print("\t请输入数目:");
            c7 = input.nextInt();
            a7 = c7*jiage;
            nums[6]+=c7;
            totalMoney[6]+=a7;
            break;
            default:
            System.out.println("\t选择无效");
            break;
        }
        System.out.print("\t是否继续购物(y/n):");
        yas = input.next();
        } while ("y".equals(yas));
        System.out.print(" * * * * * * * * * * * * * * 消费清单 * * * * * * * * * * * * * * * \n" +
        "物品\t\t\t\t单价\t\t\t\t个数\t\t\t\t金额\n");
        // 用循环来打印商品名字,单价,个数,及其各商品的金额
        for(int i=0;i<7;i++) {
            if(totalMoney[i]!=0) {
                System.out.println(goodsName[i]+"\t\t\t\t"+prices[i]+""
                        +"\t\t\t\t"+nums[i]+"\t\t\t\t"+totalMoney[i]+"\n");
                allMoneys+=totalMoney[i];
            }
            
        }
        //打印总金额
        System.out.println("总金额:\t\t\t\t\t\t\t\t\t\t\t\t"+allMoneys);
    }

}


img