-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);
}
}
這個賦值可以被描述爲「打印看起來像標識符的所有東西」,因爲它描述的算法會選擇被評論的單詞ou t,用引號括起來,等等。至少從Java的角度來說,一個*標識符*是一種奇特的方式來說「一個字母,它以一個字母開始,只包含字母,數字和下劃線」。其實,你可以在Java標識符([link](http://ideone.com/5Qikv9))中使用美元符號'$',但是如果你告訴他,我懷疑你的教授不會相信你;-) – dasblinkenlight
標識符是編譯器和語言編寫者給用作變量,類型和類名稱的字符串的名稱。 Java標識符與您發佈的正則表達式匹配。 – Will
[Scanner](http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#useDelimiter \(java.lang.String \))有這樣的方法。 –