import java.util.Scanner;
public class PriceBiger {
/**
* @param args
* 自动扩容方法
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
//商品名数组
String[] n=new String[1];
//商品单价数组
float[] p=new float[1];
//商品数量数组
byte[] num=new byte[1];
//首先输入一次结算
String str;
String s2;
int i=0;
do{
/*
* 定义数组放置商品名,商品价格,商品数量,商品小计信息
* 数组扩容,首先在外层定义一个容量为1的数组
*/
System.out.println("请输入商品名");
String name=scan.next();
n[i]=name;
String [] n1=new String[n.length+1];
for(int i1=0;i1<n.length;i1++){
//将数组n中存储的值赋给n1
n1[i1]=n[i];
}
//将扩容后的数组引用给原来的数组
n=n1;
/*此处是对数组动态扩容的注解
*
* 首先输入名字a,存放在数组n[0]中,n[0]=a; String [] n={a};
* 定义一个新数组,比数组n长度多1
* 将数组n里的值取出,放在数组n1中,此时 n1[0]=a;n1[1]=0; String [] n1={a,0};
* 将数组n1覆盖掉数组n,此时 n[0]=a;n[1]=0; String []n={a,0};
*
*
* 下一次输入名字b,存放在数组n[1]中,n[0]=a;n[1]=b; String[] n={a,b}
* 定义一个新数组,比数组n长度多1
* 将数组n里的值取出,放在数组n1中,此时 String [] n1={a,b,0};
* 将数组n1覆盖掉数组n,此时 String []n={a,b,o};
*/
System.out.println("请输入单价");
float price=scan.nextFloat();
p[i]=price;
float[] p1=new float[p.length+1];
for(int i1=0;i1<p.length;i1++){
p1[i1]=p[i1];
}
p=p1;
System.out.println("请输入数量");
byte number=scan.nextByte();
num[i]=number;
byte []num1=new byte[num.length+1];
for(int i1=0;i1<num.length;i1++){
num1[i1]=num[i1];
}
num=num1;
i++;
System.out.println("请问是否还要继续输入?Y/N?");
str=scan.next();
s2="Y";
}while(str.equals(s2));
//定义小计数组的长度
//这里需要用到小计数组,而小计数组在商品信息录入结束之前无法确定数组长度,所以在此处用n.length动态获取小计数组的长度
float [] sum=new float[n.length];
//小计求和
for(int c=0;c<n.length;c++){
sum[c]=p[c]*num[c];
}
//输入折扣
System.out.println("请输入折扣:");
float discount=scan.nextFloat();
//输入付款值
System.out.println("请输入付款值:");
float pay=scan.nextFloat();
//输出结算信息
System.out.println("******消费清单******");
System.out.println("物品名称"+"\t"+"单价"+"\t"+"数量"+"\t"+"小计");
for(int i3=0;i3<n.length-1;i3++){
System.out.println(n[i3]+"\t"+p[i3]+"\t"+num[i3]+"\t"+sum[i3]);
}
//初始化一个单精度类型sum1,供后续计算输出商品总价信息
float sum1=0f;
//sum数组中的每个值相加,求原来的总价
for(int i4=0;i4<sum.length;i4++){
sum1=(float) (sum1+sum[i4]);
}
System.out.println("折扣:"+discount);
System.out.println("原总价:"+sum1);
System.out.println("实际付款:"+sum1*discount/10);
System.out.println("付款:"+pay);
System.out.println("找零:"+(pay-sum1*discount/10));
}
}