变量的定义

时间:2012-10-28 13:57:45

标签: java multithreading

我有变量声明的问题。我试图使用多线程准备代码 但我有变量声明的问题。现在我很困惑,是否有可能将Scanner放入第二个而不是主类 - 我想是的,但我不知道如何声明变量。异常是 - 线程“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();

1 个答案:

答案 0 :(得分:2)

声明Runner static inner class。非静态内部类是实例绑定的,因此您需要外部类实例来创建非静态内部类的对象。因为您的内部类不是静态的,所以无法在main static-context内访问它{/ 1}}

static class Runner extends Thread