Exception in thread "main" java.lang.NullPointerExce

zhengxiu001 2010-12-02 09:11:23
class CreaditCard {
private String name;
private String password;
private int balance;
public CreaditCard(String name,String passowrd) {
this.name = name;
this.password = password;
}
public CreaditCard() {
}
public String getName() {
return name;
}
public int seeBalance() {
return balance;
}
public void setPassword(String password) {
this.password = password;
}
public void setBalance(int balance) {
this.balance += balance;
}
public boolean getBalance(int balance) {
boolean b = true;
if(this.balance<balance) {
b = false;
}else {
this.balance -= balance;
}
return b;
}
public String getPassword() {
return password;
}
}
class Bank {
private int personCount;
private int balanceCount;
private CreaditCard[] cc = new CreaditCard[500];
public String getPersonCount() {
return "总人数为:"+personCount;
}
public String getBalanceCount() {
return "总金额为:"+balanceCount;
}
public void setBalance(CreaditCard c,int balance) {
if(check(c)) {
c.setBalance(balance);
balanceCount += balance;
}else {
System.out.println("user exit,setbalance fail!");
}
}
public void getBalance(CreaditCard c,int balance) {
if(check(c)) {
if(c.getBalance(balance)) {

balanceCount -= balance;
}
}
}
public boolean check(CreaditCard c) {
boolean b = false;
for(CreaditCard card : cc) {
if(card!=null) {
if(card.getName().equals(c.getName())) {
b = true;
}
}
}
return b;
}
public void register(CreaditCard c) {
if(check(c)) {
System.out.println("register fail!");
}else {
cc[personCount++] = c;

balanceCount += c.seeBalance();
}
}
public void cancel(CreaditCard c) {
for(int i=0;i<cc.length;i++) {
if(cc[i]!=null) {
if(cc[i].getName().equals(c.getName())) {
personCount--;
balanceCount -= c.seeBalance();
cc[i] = null;
}
}
}
if(check(c)) {
System.out.println("user exit,cancel fail!");
}
}
public void seeCustomer() {
for(CreaditCard card : cc) {
if(card!=null) {
System.out.println("name:"+card.getName()+"\tbalance:"+card.seeBalance());
}
}
}
public CreaditCard checkName(String name) {

for(int i=0;i<cc.length;i++) {
if(cc[i]!=null) {
if(cc[i].getName().equals(name)) {
return cc[i];
}
}
}
return null;
}
public boolean checkPassword(String password) {
boolean b = false;
for(CreaditCard card : cc) {
System.out.println(card);
if(card!=null) {
//System.out.println(card);
if(card.getPassword().equals(password)) {
//System.out.println(card);
b = true;
}
}
}
return b;
}
public boolean checkPassword(CreaditCard c,String password) {
System.out.println(c);
if(c.getPassword().equals(password)) {
return true;
}else {
return false;
}
}
}
class TestBank {
public static void main(String []args) throws Exception{
CreaditCard c1 = new CreaditCard("zhengxiu","123");
CreaditCard c2 = new CreaditCard("zhengchun","234");
CreaditCard c3 = new CreaditCard("zhengxiu_001","345");
CreaditCard c4 = new CreaditCard("zhengchun001","456");

Bank bank = new Bank();
bank.register(c1);
bank.register(c2);
bank.register(c3);
bank.register(c4);

bank.setBalance(c1,1000);
bank.setBalance(c2,100);
bank.setBalance(c3,10);
bank.setBalance(c4,1);
System.out.println(bank.getPersonCount());
System.out.println(bank.getBalanceCount());
bank.seeCustomer();

bank.cancel(c1);
System.out.println(bank.getPersonCount());
System.out.println(bank.getBalanceCount());
bank.seeCustomer();

System.out.println("请输入一个数字选择不同的功能:1存款,2取款,3显示总人数,4显示总金额,5退出,6客户明细。");
st: while(true) {
int ch = 0;
ch = System.in.read() ;
switch(ch) {
case '1':
break ;
case '2':
break;
case '3':
System.out.println(bank.getPersonCount());
break st;
case '4':
System.out.println(bank.getBalanceCount());
break st;
case '5':
break st;
case '6':
bank.seeCustomer();
break st;
case ' ':
ch = 0;
break ;
case '\r':
break;
case '\n':
break;
default :
String name = (char)ch+getName();
CreaditCard myc = new CreaditCard();
myc = bank.checkName(name);
int money = Integer.parseInt(getMoney());
String password = getMoney();
System.out.println(password);
if(password.length()==0) {
if(myc!=null) {
bank.setBalance(myc,money);
System.out.println("操作成功!");
break st;
}else {
System.out.println("用户名不存在!");
}
} else {

if(myc!=null) {
System.out.println(myc);
if(bank.checkPassword(myc,password)) {

bank.getBalance(myc,money);

System.out.println("操操作成功!");
break st;
}else {
System.out.println(myc);
System.out.println("密码不正确!");
}
}else {
System.out.println("用户名不存在!");
}
}
}
}
System.out.println(bank.getPersonCount());
System.out.println(bank.getBalanceCount());
bank.seeCustomer();


}
public static String getName() throws Exception{
char ch = 0;
String name = "";
s:while(true) {
ch = (char)(System.in.read());
switch(ch) {
case ' ':
return name;
default :
name += ch;
}
}

}
public static String getMoney() throws Exception {
int ch = 0;
String money = "";
while(true) {
ch = System.in.read();
switch(ch) {
case ' ':
case '\r':
case '\n':
return money;
default :
money += ch-'0';
}
}
}
}

输入为:2 zhengchun 100 234
输出为: 空指针异常在130和209行,急求为什么?及相应的修改。
...全文
118 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengxiu001 2010-12-02
  • 打赏
  • 举报
回复
十分感谢。
sunyiz 2010-12-02
  • 打赏
  • 举报
回复
问题就在一开始

你的一个构造方法写错了

public CreaditCard(String name,String passowrd) {
this.name = name;
this.password = password;
}
改成:
public CreaditCard(String name,String password) {
this.name = name;
this.password = password;
}

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧