import java.io.*;
import java.util.*;
public class Bank {
public static void main(String args[]){
Money m1 = new Money(1000);
GetMoney card = new GetMoney("card");
GetMoney page = new GetMoney("page");
card.start();
page.start();
}
}
class Money {
int money;
Money(int money){
this.money = money;
}
public int getMoney(){
return money;
}
}
class GetMoney extends Thread{
Money m1;
public GetMoney(String string) {
setName(string);
}
public void run(){
f();
}
public synchronized void f(){
int c;
if(Thread.currentThread().getName().equals("card")){
c=m1.getMoney();
c=c-800;
if(c>=0){
System.out.println("已成功取出800元,还剩:"+c);
}else{
System.out.println("对不起余额不足取款失败,账户余额:"+c);
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
else if (Thread.currentThread().getName().equals("page")){
c=m1.getMoney();
c=c-800;
if(c>=0){
System.out.println("已成功取出800元,还剩:"+c);
}else{
System.out.println("对不起余额不足取款失败,账户余额:"+c);
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}这是一个一卡一折银行取款的简单代码 不知道哪里错了?运行时出错了
Exception in thread "card" java.lang.NullPointerException
at GetMoney.f(Bank.java:32)
at GetMoney.run(Bank.java:27)
Exception in thread "page" java.lang.NullPointerException
at GetMoney.f(Bank.java:46)
at GetMoney.run(Bank.java:27)
import java.util.*;
public class Bank {
public static void main(String args[]){
Money m1 = new Money(1000);
GetMoney card = new GetMoney("card");
GetMoney page = new GetMoney("page");
card.start();
page.start();
}
}
class Money {
int money;
Money(int money){
this.money = money;
}
public int getMoney(){
return money;
}
}
class GetMoney extends Thread{
Money m1;
public GetMoney(String string) {
setName(string);
}
public void run(){
f();
}
public synchronized void f(){
int c;
if(Thread.currentThread().getName().equals("card")){
c=m1.getMoney();
c=c-800;
if(c>=0){
System.out.println("已成功取出800元,还剩:"+c);
}else{
System.out.println("对不起余额不足取款失败,账户余额:"+c);
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
else if (Thread.currentThread().getName().equals("page")){
c=m1.getMoney();
c=c-800;
if(c>=0){
System.out.println("已成功取出800元,还剩:"+c);
}else{
System.out.println("对不起余额不足取款失败,账户余额:"+c);
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}这是一个一卡一折银行取款的简单代码 不知道哪里错了?运行时出错了
Exception in thread "card" java.lang.NullPointerException
at GetMoney.f(Bank.java:32)
at GetMoney.run(Bank.java:27)
Exception in thread "page" java.lang.NullPointerException
at GetMoney.f(Bank.java:46)
at GetMoney.run(Bank.java:27)
解决方案 »
- java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] (未知)不是一个有效的路径
- 用SSH整合技术时怎样提高数据库查询速度啊?
- Struts+spring, 多模块Struts配置文件
- 关于数据库连接池的怪问题,哪位大虾有这方面的经验请指教。
- 求教:配置了一个晚上的servlet都没有配置,大虾指点下好吗?
- JFreeChart里对饼图的每一部分做链接时,传汉字参数的问题
- 怎样在Eclipse中导入EJB的类?
- 请问这句Struts语句写法为什么错
- 在线等待:关于获得jboss的连接池的问题?
- easyui datagrid在IE8及以下的一个BUG,希望有大神能帮助解决
- 过滤器的url映射通配符问题
- 急急急!WARN No appenders could be found for logger (org.hibernate.cfg.Environment
import java.io.*;
import java.util.*;public class Bank {
public static void main(String args[]) {
Money m1 = new Money(1000);
GetMoney card = new GetMoney("card",m1);
GetMoney page = new GetMoney("page",m1);
card.start();
page.start();
}
}class Money {
int money; Money(int money) {
this.money = money;
} public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}class GetMoney extends Thread {
Money m1; public GetMoney(String string,Money m1) {
this.m1 = m1;
setName(string);
} public void run() {
f();
} public synchronized void f() {
int c;
if (Thread.currentThread().getName().equals("card")) {
c = m1.getMoney();
c = c - 800;
if (c >= 0) {
m1.setMoney(c);
System.out.println("已成功取出800元,还剩:" + c);
} else {
System.out.println("对不起余额不足取款失败,账户余额:" + c);
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else if (Thread.currentThread().getName().equals("page")) {
c = m1.getMoney();
c = c - 800;
if (c >= 0) {
m1.setMoney(c);
System.out.println("已成功取出800元,还剩:" + c);
} else {
System.out.println("对不起余额不足取款失败,账户余额:" + c);
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
“初始化为null”与“不初始化”是一样的!
简单来说,只有小写开头的类型可以不初始化,比如int, long, boolean, double, float等,因为它们有初始值。其余的大写字母开头的,都必须先被new出来,才可以用!初学者请记牢!
at GetMoney.f(Bank.java:32)
at GetMoney.run(Bank.java:27)空指针错误,一般是调用了null对象的方法导致的.按这个线索去找很容易就能发现是因为m1在调用方法时仍然为null,必须在前面赋一个初值.
Money m1 = new Money(100); m1没有实例化。