我無法撰寫成功的代碼來識別輸入文本檔案中的回圈(for 回圈、while 回圈、嵌套 for 回圈)(此輸入是使用 BufferedReader 獲取的)和方法,其中輸出應如下所示:
(從第 x 行到第 x 行的 for 回圈)
(while 回圈從第 x 行到第 x 行)
(方法 xxx 從第 x 行到第 x 行)
我首先創建一個檔案夾,其中包含一個包含隨機代碼的文本檔案(在我的情況下它是冒泡排序)代碼有注釋,所以我使用replaceAll 正則運算式洗掉了所有注釋,沒有注釋的輸出被寫入到另一個 .txt 檔案,然后,我使用 BufferedReader 讀取新的 txt 檔案并將其存盤在 ArrayList 中,這就是我卡住的地方,我嘗試了幾個 if 陳述句以查找 for 回圈作為開始。 我的問題是如何獲得我上面寫的所需輸出?
package assignment1;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
public class tryq3 {
public static void main(String a[]) throws Exception {
String fileName = "C://myFolder//output.txt";
Question1 DDD = new Question1();
String source = DDD.readFile(fileName);
String sourceNoBrackets = source.replaceAll("\\(.*\\)", "");
File file1 = new File("C:\\myFolder\\cleanOutput1.txt");
FileWriter fw = new FileWriter(file1);
PrintWriter pw = new PrintWriter(fw);
pw.println(sourceNoBrackets);
pw.close();
String line;
int counter = 0;
ArrayList<String> mylist = new ArrayList();
BufferedReader br = new BufferedReader(new FileReader("C:\\myFolder\\cleanOutput1.txt"));
while((line = br.readLine())!=null) {
mylist.add(line);
}
for(int i=0;i<mylist.size();i ) {
int count=0;
if(mylist.get(i).contains("for")) {
System.out.println("for loop from " i);
}
}
}
}
uj5u.com熱心網友回復:
我建議一旦for
找到這個詞,不要只列出行,而是找到左括號的{
開始位置和}
(結束)位置。您可以對 while 回圈和方法執行相同的操作。您需要捕獲存在嵌套 for 回圈的情況;如果找到for
then{
則另一個for
重新啟動該程序并首先在內部宣告 for 回圈,然后在外部宣告。我希望這會有所幫助!
for(int i=0;i<mylist.size();i ) {
int count=0;
if(mylist.get(i).contains("for") && mylist.get(i).contains("{")) {
for(int j=i;j<mylist.size();j ) {
if(mylist.get(j).contains("}"){
System.out.println("for loop from " i);
i = j; // begin from where j left off
}
if(mylist.get(j).contains("for") && mylist.get(j).contains("{"){ // nested loop
for(int k=j;k<mylist.size();k ) {
if(mylist.get(k).contains("}"){
System.out.println("for loop from " i);
j = k; // begin from where k left off
}
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490981.html