2014-05-22 55 views
-2

我得到靜態的思維過程和意義,但爲什麼?爲什麼Java中的掃描器會吐出「非靜態變量無法從靜態上下文中引用」?

import java.io.*; 
    import java.util.Scanner; 
    class AgeException extends Exception 
    { 
     public AgeException() 
     { 
     super("That age isn't valid."); 
     } 
    } 
    class ExceptionsInputs { 
    Scanner sc = new Scanner(System.in); 
    public static void main(String arg[]) 
    { 
     try 
     { 
      int age = sc.nextInt(); 
        if (age >= 0) { 
        } 
        if (age <= 125) 
        { 
        } 
     } 
     catch(AgeException ae) 
     { 
     System.out.println("Your Exception"); 
     } 
    } 
    } 

我得到的錯誤在第16行,int age = sc.nextInt();。一個非靜態變量(sc)被引用/稱爲靜態變量。但是,爲什麼呢?

我想我知道我使用的scanner變量只是動態的,因爲它是可重用的,對嗎?

如果這是真的,我甚至會用這個代碼來處理這種情況?

是不是int數據類型總是靜態的? nextInt會起作用嗎?

回答

1

編譯器消息說明它在遇到此類錯誤時應該說的內容。 (實例成員不能在不使用對實例的引用的情況下進行訪問,無論是顯式還是隱式this引用)
而且它與Scanner類無關。

相關問題