2012-10-26 62 views
-1

我有以下任務:查找java源文件中的標識

編寫一個程序,該程序讀取Java源文件並生成文件中所有標識符的索引。對於每個標識符,打印出現的所有行。調用in.useDelimiter(「[^ A-Za-z0-9 _] +」)。然後每次調用返回一個只包含字母,數字和下劃線的字符串。

我的計劃是創建一個示例.java文件,並逐行讀取它。我不確定標識符是什麼意思,或者useDelimiter方法提到了什麼類。任何人都可以讓我走上正軌嗎?謝謝。我會使用作業標籤,但它表示它正在被刪除。

這是我到目前爲止。我可以打印出文件中的所有標識符,但是如何找出標識符的行號?

public static void main(String[] args) { 
    System.out.println("Enter the path to your JAVA source file: "); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String pathToFile = null; 
    try { 
     pathToFile = br.readLine(); 
     File f = new File(pathToFile); 
     Scanner s = new Scanner(f); 
     s.useDelimiter("[^A-Za-z0-9_]+"); 
     while (s.hasNext()) {      
      String identifier = s.next(); 
      System.out.println(identifier); 
     } 
    } catch (IOException ioe) { 
     System.out.println("Unable to locate file. Program will exit.\n" 
          + ioe.toString()); 
     System.exit(0); 
    } 
} 
+0

這個賦值可以被描述爲「打印看起來像標識符的所有東西」,因爲它描述的算法會選擇被評論的單詞ou t,用引號括起來,等等。至少從Java的角度來說,一個*標識符*是一種奇特的方式來說「一個字母,它以一個字母開始,只包含字母,數字和下劃線」。其實,你可以在Java標識符([link](http://ideone.com/5Qikv9))中使用美元符號'$',但是如果你告訴他,我懷疑你的教授不會相信你;-) – dasblinkenlight

+0

標識符是編譯器和語言編寫者給用作變量,類型和類名稱的字符串的名稱。 Java標識符與您發佈的正則表達式匹配。 – Will

+1

[Scanner](http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#useDelimiter \(java.lang.String \))有這樣的方法。 –

回答