我把文件一行一行地存入到了動態(tài)數組 list中,然后刪除list里面的注釋和輸出語句。其中countNote是算注釋個數的,charInNote是算注釋的總字符數的??墒亲詈蟮玫降膌ist存在很多問題,有大佬能幫我改一下代碼嗎這是測試文件String.java
注釋總個數應該有156個注釋總的字符數應該有 88469個
public void operateNote(ArrayList<String> list) throws Exception{
String s = null;
for(int j=0;j<list.size();j++) {
s=list.get(j);
int note1=s.indexOf("/*");
int note2=s.indexOf("http://");
int note3=s.indexOf("*/");
//int note4=s.indexOf("\"");
String dm="\"(.*)\"";//雙引號
String sm="\'(.*)\'";//單引號
if(note1!=-1&¬e3==-1) {//多行注釋
countNote++;
String ttt=list.get(j);
list.set(j, ttt.substring(0, note1));
charInNote+=s.substring(note1).length()+1;//+1是包括換行符
s=list.get(++j);
while((note3=s.indexOf("*/"))==-1) {
if((note2=s.indexOf("http://"))!=-1) {
countNote++;
}
list.remove(j);
charInNote+=s.length()+1;
if(j<list.size()-1) {
s=list.get(++j);
}else {
break;
}
}
list.remove(j);
charInNote+=s.length();
}else if(note2!=-1) {// "http://"類的單行注釋
countNote++;
list.set(j, s.substring(0,note2));
charInNote+=s.substring(note2).length()+1;
}else if(note1!=-1&¬e3!=-1) {//單行注釋
countNote++;
String m1=s.substring(0, note1);
String m2=s.substring(note3+2);
String m3=m1+m2;
charInNote+=s.substring(note1, note3+2).length();
list.set(j, m3);
}else {//刪除輸出語句
String rp=list.get(j);
rp=rp.replaceAll(dm, "");
list.set(j, rp);
}
}
}
4 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
你這個對與邏輯不是很清晰:
應該是這樣:
字符串首先trim,去除前后空格
先判斷/**
如果是,記錄多行狀態(tài)為true,累加注釋個數
在此期間的//忽略,累加注釋字符數
再判斷*/,如果是,記錄多行狀態(tài)為false,
判斷//,如果是,記錄//到字符串尾的字符數.累加注釋字符數,累加注釋個數
還有,我在枚舉中喜歡 /* 注釋 / 這樣考慮,你也要注意下.
添加回答
舉報
0/150
提交
取消