求Java大神帮我看一下!按着书打的,但程序运行有错误。

2024-11-18 18:24:46
推荐回答(2个)
回答1:

这样才行

class BankAccount{
private static int amount=2000;
public void despoit(int m){
amount=amount+m;
System.out.println("小明存入["+m+"元]");
}
public void withdraw(int m){
amount=amount-m;
System.out.println("张新取走["+m+"元]") ;
if(amount<0)
System.out.println("***余额不足!***");
}
public int balance(){
return amount;
}
}
class Customer extends Thread{
String name;
BankAccount bs;
public Customer(BankAccount b,String s){
name=s;
bs=b;
}
public synchronized static void cus(String name,BankAccount bs){
if(name.equals("小明")){
try{
for(int i=0;i<6;i++){
Thread.sleep((int)(Math.random()*300));
bs.despoit(1000);
}
}catch(InterruptedException e){}
}else{
try{
for(int i=0;i<6;i++){
Thread.sleep((int)(Math.random()*300));
bs.withdraw(1000);
}
}catch(InterruptedException e){}
}
}
public void run(){
cus(name,bs);
}
}
public class AccountTest {
public static void main(String args[])throws InterruptedException{
BankAccount bs=new BankAccount();
Customer customer1=new Customer(bs,"小明");
Customer customer2=new Customer(bs,"张新");
customer1.start();
customer2.start();
Thread.sleep(500);
}
}

回答2:

main函数里面的Customer1和Customer2改成小写就好了

hread t1 = new Thread(customer1);
Thread t2 = new Thread(customer2);