0

私は Java でのコーディングの初心者です... マルチタスクを図解するプログラムを実装しようとしています。詳細、3 つのクラスがあり、変数を個別に宣言すると、タスクを達成できますが、あるクラスの変数を別のクラスで使用したいという要件が必要です。変数を宣言していますが、公開されているため、例外/エラーがスローされています。専門家が明確に理解できるように、実装コードを次に示します。

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();
    }
}

エラーが発生した場所のスクリーンショットは次のとおりです

ここに画像の説明を入力

どんな助けも私にとって素晴らしいものであり、感謝しています。

よろしくお願いします:)

4

2 に答える 2

0

trainAvailability=tr.trainAvailability; このクラスでは tr が宣言されていません

スレッド化された環境でこれを行い、変数を読み取る場合は、変数を揮発性として宣言するのが最善です

于 2012-04-16T11:28:18.620 に答える
0

どの行を含むかを知るのに役立つ例外ではなく、コンパイルエラーが発生しています。

を使用してtrいますが、TrainReservationCancel クラスに渡していません。

TrainReservation を取るようにコンストラクタを変更してみてください

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

そして主に

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

implements Runnableところで:代わりにクラスを作成したいextends Thread

于 2012-04-16T11:01:28.603 に答える