2012-04-16 4 views
0

나는 자바로 코딩하는 초보자이다 ... 나는 멀티 태스킹을하는 프로그램을 구현하려고하고있다. 프로그래밍 중에 나는 할 수없는 작은 일을 당했다. 세부 정보를 얻으려면 3 가지 클래스가 있습니다. 여기서 변수를 개별적으로 선언하면 작업을 성공적으로 수행 할 수 있지만, 다음과 같은 변수를 사용하기를 원합니다. 변수를 public으로 선언하고 있지만 예외/오류가 발생합니다. 여기에 전문가를위한 명확한 이해를위한 구현 코드가 있습니다! 여기 다른 클래스에 하나의 클래스 변수를 사용하는 방법

class TrainReservation extends Thread 
{ 
    public int trainAvailability=1, bearthAvailability=1; 
    int noOfSeats; 
    TrainReservation(int noOfSeats) 
    { 
     this.noOfSeats=noOfSeats; 
    } 
    public void run() 
    { 
     if((trainAvailability >= noOfSeats) && (bearthAvailability >= noOfSeats)) 
     { 
      System.out.println("seat is reserved"); 
      trainAvailability=trainAvailability-noOfSeats; 
      bearthAvailability=bearthAvailability-noOfSeats; 
      System.out.println(trainAvailability); 
     } 
     else 
      System.out.println("no seats available"); 
    } 
} 
class TrainReservationCancel extends Thread 
{ 
    int trainAvailability; 
    trainAvailability=tr.trainAvailability; 
    int noOfSeats; 
    TrainReservationCancel(int noOfSeats) 
    { 
     this.noOfSeats=noOfSeats; 
    } 
    public void run() 
    { 
     if(noOfSeats!=0) 
     { 
      bearthAvailability=bearthAvailability+noOfSeats; 
      trainAvailability=trainAvailability+noOfSeats; 
      System.out.println(bearthAvailability); 
     } 
    } 
} 
class MainClass 
{ 
    public static void main(String[] args) 
    { 
     TrainReservation tr=new TrainReservation(2); 
     TrainReservationCancel tr1=new TrainReservationCancel(1); 
     Thread obj=new Thread(tr); 
     tr.start(); 
     Thread obj1= new Thread(tr1); 
     tr1.start(); 
    } 
} 

은 어떤 도움이 나에게 위대하고 주시면 감사하겠습니다 오류가

enter image description here

곳의 스크린 샷이다. 모든 사전에

감사합니다 :)

+0

은 무엇 예외/오류가 발생합니다 그들과 같은 휘발성 선언 당신은 또한 가장 좋은 것입니다 변수를 사형 환경에서이 일을하고 읽는 경우이 클래스

에 선언하고, 정확히 어디에 있지 TR? 전체 스택 추적을 추가하십시오. –

+0

'trainAvailability = tr.trainAvailability;'이'tr'은 무엇입니까? – shan

+0

@shan 기차 이용 가능 클래스 –

답변

0

당신은 어떤 라인을 포함 알고 있으면 유용하지 예외, 컴파일 오류를 얻고있다.

tr을 사용하고 있지만 TrainReservationCancel 클래스에 전달하지 마십시오.

TrainReservation에게

TrainReservationCancel(int noOfSeats, TrainReservation tr) 
{ 
    this.noOfSeats=noOfSeats; 
    this.trainAvailability=tr.trainAvailability; 
} 

및 BTW 주요

TrainReservation tr=new TrainReservation(2); 
TrainReservationCancel tr1=new TrainReservationCancel(1, tr); 

에 걸릴 생성자를 변경해보십시오 : 당신은 당신의 클래스 implements Runnable 대신 extends Thread

+1

그리고 TrainReservationCancel에서 bearthAvailability를 사용하는 방법은 비슷합니다. – giorashc

+0

@peter lawrey하지만 제안한 방법을 구현 한 후에도 아무런 반응이 없었습니다. 어쨌든 걱정에 감사드립니다. –

+0

"아무 것도 우리 일을 못했다"는 것은 무엇을 의미합니까? 같은 오류가 있다는 것을 의미합니까? 새로운 오류가 있다는 것을 의미합니까? 코드의 나머지 부분을 고쳤지만 프로그램이 작동하면 프로그램이 컴파일됩니다. –

0

trainAvailability = tr.trainAvailability으로 만들고 싶어 ; 당신이

관련 문제