2012-10-28 116 views
1

我有變量聲明的問題。試圖使用多線程 準備代碼,但我有變量聲明的問題。現在我感到困惑,是否有可能把掃描儀放入第二個主類 - 我想是的,但我不知道如何聲明變量。例外的是 - 異常在線程「主」了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(); 
+0

您的類'Runner'也不是一成不變的,但你在靜態方法'main'使用它。 – toniedzwiedz

+0

請縮進您的代碼以使其可讀。 – 2012-10-28 14:00:08

回答

2

聲明Runnerstatic inner class。非靜態內部類是實例綁定的,因此您需要外部類實例來創建非靜態內部類的對象。而且因爲你的內部類是不固定的,你不能訪問它裏面main這是static-context

static class Runner extends Thread 
+0

謝謝......現在它可以工作 – DRastislav