제가 에러가 자꾸 나서 아무리 생각해도 답이안나옵니다.
고수 분께서 제발 답변 좀 부탁드릴꼐요!!
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();
}
}
답변자님,
정보를 공유해 주세요.
어떤부분의 어떤 문제인제 에러인지를 명확히 하지 않으셔서 기존에 작성하신 소스의 에러만 잡아봤습니다.
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이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.