NAVER

질문 강의시간에 배운 현금입출금기 소스입니다!!
nova**** 조회수 330 작성일2007.10.06

제가 에러가 자꾸 나서 아무리 생각해도 답이안나옵니다.

고수 분께서 제발 답변 좀 부탁드릴꼐요!!

5명에서 한 입출금기에서 램덤하게 하는겁니다!!

----------------------------------------------------------------------

class ATM
{  // ATM 계좌 정보
    private int total; 
    public ATM(int total) {  
        this.total = total;
    }
    synchronized void deposit(int amount, String name) {
        total += amount;
        System.out.println(name +" : 입금 금액 : "+ amount);
    }
    synchronized void withdraw(int amount, String name) {
        if((total - amount) > 0) {  // 출금 가능하면
            total -= amount; 
            System.out.println(name +" : 출금 금액 : "+ amount);
        }
    else {
            System.out.println(name +"님 잔액이 부족해 출금할 수 없습니다.");
        }
    }
    public void getTotal()
    {
    System.out.println("현재 계좌 잔액은 : "+ total) ;
    }
}

class ATM_USER extends ATM {  // ATM 사용자
boolean flag = false;  // 입금/인출
ATM obj;

public ATM_USER(ATM obj, String name)
{
    super(name);
    this.obj = obj;
}

public void run()
{
    for(int i = 0; i < 10; i++)
    {
     try {
            sleep(500);
        }
        catch(InterruptedException e){
        }
if(flag) {
            obj.deposit((int)(Math.random()*10000), getName());
            obj.getTotal();
        }
        else {
            obj.withdraw((int)(Math.random()*10000), getName());
            obj.getTotal();
 }
        flag = !flag ; 
    } 
}

private void sleep(int i) {
 // TODO Auto-generated method stub
 
}

private String getName() {
 // TODO Auto-generated method stub
 return null;
}

private String getName() {
 // TODO Auto-generated method stub
 return null;
}
}

public class ATM_EXE {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ATM obj = new ATM(10000);// 계좌에 10000원이 있음
  
        ATM_USER user1 = new ATM_USER(obj,"서보원");
        ATM_USER user2 = new ATM_USER(obj,"최재규");
        ATM_USER user3 = new ATM_USER(obj,"노경아");
        ATM_USER user4 = new ATM_USER(obj,"나경민 ");
        ATM_USER user5 = new ATM_USER(obj,"김제학");
    
        user1.start();
        user2.start();
        user3.start();
        user4.start();
        user5.start();
 }

}

프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
hide****
고수
자바, JSP, 번역, 통역, 자바스크립트 분야에서 활동
본인 입력 포함 정보

어떤부분의 어떤 문제인제 에러인지를 명확히 하지 않으셔서  기존에 작성하신 소스의 에러만 잡아봤습니다.

 

name 변수는 없길레 대충 만들어줬고  

 

getName 메소드역시 내용 추가했습니다.... 결과를 확인하긴 하였으나 님이 의도하신데로인지 까지는 확인을 못했으니 제가 수정한 소스 보시고 다시 확인 후 쪽지주시면 답변 더 해드리겠습니다  애매한 부분이 있었거든요

 

class ATM
{  // ATM 계좌 정보
 private int total;
 private String name;
 public ATM(String name){
  this.name = name;
 }
 public ATM(int total) { 
  this.total = total;
 }
 synchronized void deposit(int amount, String name) {
  total += amount;
  System.out.println(name +" : 입금 금액 : "+ amount);
 }
 synchronized void withdraw(int amount, String name) {
  if((total - amount) > 0) {  // 출금 가능하면
   total -= amount;
   System.out.println(name +" : 출금 금액 : "+ amount);
  }
 else {
   System.out.println(name +"님 잔액이 부족해 출금할 수 없습니다.");
  }
 }
 public void getTotal()
 {
 System.out.println("현재 계좌 잔액은 : "+ total) ;
 }
}

 

 

class ATM_USER extends ATM {  // ATM 사용자
boolean flag = false;  // 입금/인출
ATM obj;
String name;
public ATM_USER(ATM obj, String name)
{
 super(name);
 this.name = name;
 this.obj = obj;
}

public void run()
{
 for(int i = 0; i < 10; i++)
 {
  sleep(500);
 
  if(flag) {
    obj.deposit((int)(Math.random()*10000), getName());
    obj.getTotal();
  }
  else {
    obj.withdraw((int)(Math.random()*10000), getName());
    obj.getTotal();
   }
  flag = !flag ;
 }
}

private void sleep(int i) {
 // TODO Auto-generated method stub
 
}

private String getName() {
 return name;
 // TODO Auto-generated method stub
 
}

}

 

 

public class ATM_EXE {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ATM obj = new ATM(10000);// 계좌에 10000원이 있음
 
  ATM_USER user1 = new ATM_USER(obj,"서보원");
  ATM_USER user2 = new ATM_USER(obj,"최재규");
  ATM_USER user3 = new ATM_USER(obj,"노경아");
  ATM_USER user4 = new ATM_USER(obj,"나경민 ");
  ATM_USER user5 = new ATM_USER(obj,"김제학");
   
  user1.run();
  user2.run();
  user3.run();
  user4.run();
  user5.run();
 }

}

2007.10.06.

  • 채택

    질문자가 채택한 답변입니다.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.