1

変数の宣言に問題があります。iamはマルチスレッドを使用してコードを準備しようとしていますが、変数の宣言に問題があります。今、iamは混乱しています。Scannerをメインクラスではなく2番目のクラスに入れることができるかどうか-はいと思いますが、変数を宣言する方法がわかりません。例外は-スレッド"main"の例外java.lang.RuntimeException:コンパイルできないソースコード-非静的変数これは 、test1.PIN.mainの静的コンテキストから参照できません...

public class PIN{

    static int a;

class Runner extends Thread{

public void run(){

    Scanner sc = new Scanner(System.in);
    for(int i= 1; i<4; i++){
    System.out.println("PUT your PIN: ");
    int a = sc.nextInt();

                try {
                    Thread.sleep(100);
                } catch (InterruptedException ex) {
                    Logger.getLogger(PIN.class.getName()).log(Level.SEVERE, null, ex);
                }

 if(a ==1234){
     System.out.println("PIN  OK");
 } else {System.out.println("PIN NOK");}   

}
}
}

public static void main(String[] args){

    Runner r = new Runner();
    r.start();
4

1 に答える 1

2

宣言しますRunner static inner class。非静的内部クラスはインスタンスにバインドされているため、非静的内部クラスのオブジェクトを作成するには外部クラスインスタンスが必要です。mainまた、内部クラスは静的ではないため、内部クラスにアクセスすることはできません。static-context

static class Runner extends Thread
于 2012-10-28T14:01:27.347 に答える