import java.text.SimpleDateFormat;
import java.util.*;
class Cake
{
String cakeCode;
String cakeName;
float price;
String getCakeId()
{
return cakeCode;
}
void setCakeId(String cakeCode)
{
this.cakeCode=cakeCode;
}
String getCakeName()
{
return cakeName;
}
void setCakeName(String cakeName)
{
this.cakeName=cakeName;
}
float getPrice()
{
return price;
}
void setPrice(float price)
{
this.price=price;
}
}
class SaleRecord
{
int saleId;
String saleDate;
String cakeCode;
float weight;
float price;
float saleSum;
String getCakeCode()
{
return cakeCode;
}
void setCakeCode(String cakeCode)
{
this.cakeCode=cakeCode;
}
float getPrice()
{
return price;
}
void setPrice(float price)
{
this.price=price;
}
String getSaleDate()
{
return saleDate;
}
void setSaleDate(String saleDate)
{
this.saleDate=saleDate;
}
int getSaleId()
{
return saleId;
}
void setSaleId(int saleId)
{
this.saleId=saleId;
}
float getSaleSum()
{
return saleSum;
}
void setSaleSum(float SaleSum)
{
this.saleSum=SaleSum;
}
float getWeight()
{
return weight;
}
void setWeight(float weight)
{
this.weight=weight;
}
}
public class CakeSaleTree
{
static TreeMap SALEMAP=null;
static int saleIdCounter=1;
public String[][] CAKEINFO=
{
{"A01","法式蛋糕","35"},
{"A02","意式蛋糕","40"},
{"B01","巧克力蛋糕","45"},
{"B02","冰淇淋蛋糕","50"},
{"B03","奶油水果蛋糕","50"},
{"C01","草莓芝式蛋糕","70"},
{"C02","朗姆酒木蛋糕","80"}
};
HashMap converCakeinfo()
{
HashMap hm=new HashMap();
int cakeSize=CAKEINFO.length;
for(int n=0;n<cakeSize;n++)
{
Cake obj=new Cake();
obj.setCakeId(CAKEINFO[n][0]);
obj.setCakeName(CAKEINFO[n][1]);
obj.setPrice(Float.parseFloat(CAKEINFO[n][2]));
hm.put(CAKEINFO[n][0],obj);
}
return hm;
}
String getCurrentDate()
{
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
String dateTime=s.format(new Date());
return dateTime;
}
SaleRecord getSaleRecord(String cakeCode,float weight)
{
HashMap hm = converCakeinfo();
float price=((Cake)hm.get(cakeCode)).getPrice();
String saleDate=getCurrentDate();
float saleSum=price*weight;
SaleRecord obj=new SaleRecord();
obj.setSaleId(saleIdCounter++);
obj.setSaleDate(saleDate);
obj.setCakeCode(cakeCode);
obj.setPrice(price);
obj.setWeight(weight);
obj.setSaleSum(saleSum);
return obj;
}
void addSumRecord(String cakeCode,float weight)
{
SaleRecord saleObj = getSaleRecord(cakeCode,weight);
if (SALEMAP==null)
{
SALEMAP=new TreeMap();
}
SALEMAP.put(saleObj.getSaleSum(), saleObj);
}
void viewSaleList()
{
if(SALEMAP == null){
return;
}
int size=SALEMAP.size();
System.out.println("序号\t\t"+"日期\t\t"+"蛋糕编号\t\t"+"销售金额");
for(int n=0;n<size;n++)
{
SaleRecord obj=(SaleRecord)SALEMAP.get(n);
int Id=obj.getSaleId();
String date=obj.getSaleDate();
String cakeCode=obj.getCakeCode();
float saleSum=obj.getSaleSum();
System.out.println(Id+"\t\t"+date+"\t\t"+cakeCode+"\t\t"+saleSum);
}
}
public static void main(String[] args)
{
CakeSaleTree cakeSaleTree = new CakeSaleTree();
System.out.println("\n 欢迎进入收银系统!\n\n");
do
{
System.out.println("请输入蛋糕编号:");
Scanner s=new Scanner(System.in);
String cakeCode=s.next().trim().toUpperCase();
System.out.println("请输入蛋糕重量:");
float weight = Float.parseFloat(s.next().trim());
cakeSaleTree.addSumRecord(cakeCode,weight);
System.out.println("\n是否继续录入?[y继续录入,e退出系统,v查看报表]");
String key=s.next().trim().toLowerCase();
if(key.equals("e"))
{
System.out.println("系统已经退出!");
break;
}
if(key.equals("v"))
{
cakeSaleTree.viewSaleList();
}
}while(true);
}
}
for(int n=0;n <size;n++)
{
SaleRecord obj=(SaleRecord)SALEMAP.get(n);
int Id=obj.getSaleId();
String date=obj.getSaleDate();
String cakeCode=obj.getCakeCode();
float saleSum=obj.getSaleSum();
System.out.println(Id+"\t\t"+date+"\t\t"+cakeCode+"\t\t"+saleSum);
} 你的n值是从0开始,而且是int型
但是你之前存进去的key值对应的是SaleSum,类型是float
当然会出错啊
你自己去改一下吧
改成SALEMAP.put(saleObj. getSaleId(), saleObj);//saleId是int型的,还是有错误啊!
欢迎进入收银系统!
请输入蛋糕编号:
a02
请输入蛋糕重量:
2是否继续录入?[y继续录入,e退出系统,v查看报表]
v
Exception in thread "main" 序号 日期 蛋糕编号 销售金额
java.lang.NullPointerException
at CakeSaleTree.viewSaleList(CakeSaleTree.java:161)
at CakeSaleTree.main(CakeSaleTree.java:189)
为什么要从0开始取值啊?
这个你有没有想清楚?
为什么要从0开始取值啊?
这个你有没有想清楚?
上面有个# ,按下后选择java,我代码贴在这中间就行了
viewSaleList() 里n是从0开始的, SALEMAP.get(n)第一次就是0,没有,就会报错
建议把saleIdCounter初始值设为0,或者循环里计数都从1开始。
import java.util.*;
class Cake
{
String cakeCode;
String cakeName;
float price;
String getCakeId()
{
return cakeCode;
}
void setCakeId(String cakeCode)
{
this.cakeCode=cakeCode;
}
String getCakeName()
{
return cakeName;
}
void setCakeName(String cakeName)
{
this.cakeName=cakeName;
}
float getPrice()
{
return price;
}
void setPrice(float price)
{
this.price=price;
}
}
class SaleRecord
{
int saleId;
String saleDate;
String cakeCode;
float weight;
float price;
float saleSum;
String getCakeCode()
{
return cakeCode;
}
void setCakeCode(String cakeCode)
{
this.cakeCode=cakeCode;
}
float getPrice()
{
return price;
}
void setPrice(float price)
{
this.price=price;
}
String getSaleDate()
{
return saleDate;
}
void setSaleDate(String saleDate)
{
this.saleDate=saleDate;
}
int getSaleId()
{
return saleId;
}
void setSaleId(int saleId)
{
this.saleId=saleId;
}
float getSaleSum()
{
return saleSum;
}
void setSaleSum(float SaleSum)
{
this.saleSum=SaleSum;
}
float getWeight()
{
return weight;
}
void setWeight(float weight)
{
this.weight=weight;
} }
public class CakeSaleTree
{
static TreeMap SALEMAP=null;
static int saleIdCounter=1;
public String[][] CAKEINFO=
{
{"A01","法式蛋糕","35"},
{"A02","意式蛋糕","40"},
{"B01","巧克力蛋糕","45"},
{"B02","冰淇淋蛋糕","50"},
{"B03","奶油水果蛋糕","50"},
{"C01","草莓芝式蛋糕","70"},
{"C02","朗姆酒木蛋糕","80"}
};
HashMap converCakeinfo()
{
HashMap hm=new HashMap();
int cakeSize=CAKEINFO.length;
for(int n=0;n <cakeSize;n++)
{
Cake obj=new Cake();
obj.setCakeId(CAKEINFO[n][0]);
obj.setCakeName(CAKEINFO[n][1]);
obj.setPrice(Float.parseFloat(CAKEINFO[n][2]));
hm.put(CAKEINFO[n][0],obj); }
return hm;
}
String getCurrentDate()
{
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
String dateTime=s.format(new Date());
return dateTime;
}
SaleRecord getSaleRecord(String cakeCode,float weight)
{
HashMap hm = converCakeinfo();
float price=((Cake)hm.get(cakeCode)).getPrice();
String saleDate=getCurrentDate();
float saleSum=price*weight;
SaleRecord obj=new SaleRecord();
obj.setSaleId(saleIdCounter++);
obj.setSaleDate(saleDate);
obj.setCakeCode(cakeCode);
obj.setPrice(price);
obj.setWeight(weight);
obj.setSaleSum(saleSum);
return obj;
}
void addSumRecord(String cakeCode,float weight)
{
SaleRecord saleObj = getSaleRecord(cakeCode,weight);
if (SALEMAP==null)
{
SALEMAP=new TreeMap();
}
SALEMAP.put(saleObj.getSaleSum(), saleObj);
}
void viewSaleList()
{
if(SALEMAP == null){
return;
}
int size=SALEMAP.size();
System.out.println("序号\t\t"+"日期\t\t"+"蛋糕编号\t\t"+"销售金额");
for(int n=0;n <size;n++)
{
SaleRecord obj=(SaleRecord)SALEMAP.get(n);
int Id=obj.getSaleId();
String date=obj.getSaleDate();
String cakeCode=obj.getCakeCode();
float saleSum=obj.getSaleSum();
System.out.println(Id+"\t\t"+date+"\t\t"+cakeCode+"\t\t"+saleSum);
}
}
public static void main(String[] args)
{
CakeSaleTree cakeSaleTree = new CakeSaleTree();
System.out.println("\n 欢迎进入收银系统!\n\n");
do
{
System.out.println("请输入蛋糕编号:");
Scanner s=new Scanner(System.in);
String cakeCode=s.next().trim().toUpperCase();
System.out.println("请输入蛋糕重量:");
float weight = Float.parseFloat(s.next().trim());
cakeSaleTree.addSumRecord(cakeCode,weight);
System.out.println("\n是否继续录入?[y继续录入,e退出系统,v查看报表]");
String key=s.next().trim().toLowerCase();
if(key.equals("e"))
{
System.out.println("系统已经退出!");
break;
}
if(key.equals("v"))
{
cakeSaleTree.viewSaleList();
}
}while(true);
}
}
import java.text.SimpleDateFormat;
import java.util.*;class Cake {
String cakeCode;
String cakeName;
float price; String getCakeId() {
return cakeCode;
} void setCakeId(String cakeCode) {
this.cakeCode = cakeCode;
} String getCakeName() {
return cakeName;
} void setCakeName(String cakeName) {
this.cakeName = cakeName;
} float getPrice() {
return price;
} void setPrice(float price) {
this.price = price;
}
}class SaleRecord {
int saleId;
String saleDate;
String cakeCode;
float weight;
float price;
float saleSum; String getCakeCode() {
return cakeCode;
} void setCakeCode(String cakeCode) {
this.cakeCode = cakeCode;
} float getPrice() {
return price;
} void setPrice(float price) {
this.price = price;
} String getSaleDate() {
return saleDate;
} void setSaleDate(String saleDate) {
this.saleDate = saleDate;
} int getSaleId() {
return saleId;
} void setSaleId(int saleId) {
this.saleId = saleId;
} float getSaleSum() {
return saleSum;
} void setSaleSum(float SaleSum) {
this.saleSum = SaleSum;
} float getWeight() {
return weight;
} void setWeight(float weight) {
this.weight = weight;
}}public class CakeSaleTree {
static TreeMap SALEMAP = null;
static int saleIdCounter = 1;
public String[][] CAKEINFO = { { "A01", "法式蛋糕", "35" },
{ "A02", "意式蛋糕", "40" }, { "B01", "巧克力蛋糕", "45" },
{ "B02", "冰淇淋蛋糕", "50" }, { "B03", "奶油水果蛋糕", "50" },
{ "C01", "草莓芝式蛋糕", "70" }, { "C02", "朗姆酒木蛋糕", "80" } }; HashMap converCakeinfo() {
HashMap hm = new HashMap();
int cakeSize = CAKEINFO.length;
for (int n = 0; n < cakeSize; n++) {
Cake obj = new Cake();
obj.setCakeId(CAKEINFO[n][0]);
obj.setCakeName(CAKEINFO[n][1]);
obj.setPrice(Float.parseFloat(CAKEINFO[n][2]));
hm.put(CAKEINFO[n][0], obj); }
return hm;
} String getCurrentDate() {
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
String dateTime = s.format(new Date());
return dateTime;
} SaleRecord getSaleRecord(String cakeCode, float weight) {
HashMap hm = converCakeinfo();
float price = ((Cake) hm.get(cakeCode)).getPrice();
String saleDate = getCurrentDate();
float saleSum = price * weight;
SaleRecord obj = new SaleRecord();
obj.setSaleId(saleIdCounter++);
obj.setSaleDate(saleDate);
obj.setCakeCode(cakeCode);
obj.setPrice(price);
obj.setWeight(weight);
obj.setSaleSum(saleSum);
return obj;
} void addSumRecord(String cakeCode, float weight) {
SaleRecord saleObj = getSaleRecord(cakeCode, weight);
if (SALEMAP == null) {
SALEMAP = new TreeMap();
}
SALEMAP.put(saleObj.getSaleSum(), saleObj);
} void viewSaleList() {
if (SALEMAP == null) {
return;
}
int size = SALEMAP.size();
System.out.println("序号\t\t" + "日期\t\t" + "蛋糕编号\t\t" + "销售金额");
for (int n = 0; n < size; n++) {
SaleRecord obj = (SaleRecord) SALEMAP.get(n);
int Id = obj.getSaleId();
String date = obj.getSaleDate();
String cakeCode = obj.getCakeCode();
float saleSum = obj.getSaleSum();
System.out.println(Id + "\t\t" + date + "\t\t" + cakeCode + "\t\t"
+ saleSum);
}
} public static void main(String[] args) {
CakeSaleTree cakeSaleTree = new CakeSaleTree();
System.out.println("\n 欢迎进入收银系统!\n\n");
do {
System.out.println("请输入蛋糕编号:");
Scanner s = new Scanner(System.in);
String cakeCode = s.next().trim().toUpperCase();
System.out.println("请输入蛋糕重量:");
float weight = Float.parseFloat(s.next().trim());
cakeSaleTree.addSumRecord(cakeCode, weight);
System.out.println("\n是否继续录入?[y继续录入,e退出系统,v查看报表]");
String key = s.next().trim().toLowerCase();
if (key.equals("e")) {
System.out.println("系统已经退出!");
break;
}
if (key.equals("v")) {
cakeSaleTree.viewSaleList();
}
} while (true);
}
}