1

我对变量的声明有疑问。我正在尝试使用多线程准备代码,但我在声明变量时遇到问题。现在我很困惑,是否可以将 Scanner 放入第二个而不是主类 - 我想是的,但我不知道如何声明变量。异常是 -线程“主”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。非静态内部类是实例绑定的,因此您需要外部类实例来创建非静态内部类的对象。而且因为你的内部类不是静态的,你不能在里面访问mainstatic-context

static class Runner extends Thread
于 2012-10-28T14:01:27.347 回答