利用Java簡(jiǎn)單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器方法實(shí)例
前言
哈嘍,我是小黑, 最近學(xué)了java的輸入輸出流后一直心癢癢,總想找一點(diǎn)事情來做,所以用java代碼來實(shí)現(xiàn)了一下統(tǒng)計(jì)代碼的所有行數(shù),看一下我上大學(xué)以來到底打了多少行。
先附上實(shí)現(xiàn)代碼吧!
package InOutStream; import java.util.* ; import java.io.* ; class codeCount { private static int count ; //統(tǒng)計(jì)總行數(shù) private static int countCPP ;//CPP private static int countJAVA ;//java private static int countPY ;//python private String path ; //用于接收用戶輸入保存代碼的文件夾的路徑 private int reading(String path) throws Exception { //該函數(shù)用來統(tǒng)計(jì)一個(gè)代碼文件的行數(shù) FileReader reader = new FileReader(path) ; BufferedReader buffer = new BufferedReader(reader) ; int count = 0 ; while(buffer.readLine()!=null) { count ++ ; } buffer.close() ; reader.close() ; return count ; } private void caculate(String nowpath) throws Exception{//計(jì)數(shù)函數(shù) File nowfile = new File(nowpath) ; if (nowfile.isFile()) { if (nowpath.endsWith(".cpp")) { int sum = reading(nowpath) ; countCPP += sum ; count += sum ; } else if (nowpath.endsWith(".py")) { int sum = reading(nowpath) ; countPY += sum ; count += sum ; } else if (nowpath.endsWith(".java")) { int sum = reading(nowpath) ; countJAVA += sum ; count += sum ; } else { System.out.println(nowpath.substring(nowpath.indexOf("."))+":該類型文件不屬于代碼文件或該代碼文件統(tǒng)計(jì)功能正在開發(fā)中,敬請(qǐng)期待!"); } } else { //如果這個(gè)路徑表示的是一個(gè)文件夾,則執(zhí)行遞歸操作 String []filesset = nowfile.list() ; for (String i:filesset ) { String newpath = nowpath + nowfile.separator + i ;//合成路徑 caculate(newpath) ; } } } public codeCount(String src) { path = src ; } public static int getLinesCPP() { return countCPP ; } public static int getLinesJAVA() { return countJAVA ; } public static int getLinesPY() { return countPY ; } public static int getLines() { return count ; } public void caculator() throws Exception { //外界包裝 this.caculate(path) ; } public String toString() { //重寫toString方法 return "統(tǒng)計(jì)結(jié)果如下:\n" + "cpp行數(shù):\n"+countCPP + "\njava行數(shù):\n"+countJAVA + "\npython行數(shù):\n"+countPY ; } } public class Count{ public static void main(String []args) throws Exception { Scanner cin = new Scanner(System.in) ; System.out.println("請(qǐng)輸入地址:"); String path = cin.next() ; codeCount machine = new codeCount(path) ; machine.caculator(); System.out.println(machine.toString()); cin.close(); } }
實(shí)例:
我在桌面保存了一個(gè)文件夾用來保存代碼:
打開后是這個(gè)樣子:
取路徑:
運(yùn)行程序,將路徑粘貼到程序之內(nèi)
結(jié)果如下!!!
這就是所有代碼拉??!如果你有其他什么實(shí)現(xiàn)方法或者意見或者建議,歡迎在評(píng)論區(qū)中提出來哦!
ps:由于我只學(xué)了c、cpp、java、python。所以代碼中只針對(duì)這幾種進(jìn)行了統(tǒng)計(jì),歡迎您修改代碼來滿足您的需求?。?/p>
總結(jié)
到此這篇關(guān)于利用Java簡(jiǎn)單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)代碼行數(shù)統(tǒng)計(jì)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java批量從svn導(dǎo)出多個(gè)項(xiàng)目代碼實(shí)例
這篇文章主要介紹了java批量從svn導(dǎo)出多個(gè)項(xiàng)目代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Springboot集成JSR303參數(shù)校驗(yàn)的方法實(shí)現(xiàn)
這篇文章主要介紹了Springboot集成JSR303參數(shù)校驗(yàn)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09使用Spring Cloud Feign遠(yuǎn)程調(diào)用的方法示例
這篇文章主要介紹了使用Spring Cloud Feign遠(yuǎn)程調(diào)用的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09Eclipse+Java+Swing+Mysql實(shí)現(xiàn)電影購票系統(tǒng)(詳細(xì)代碼)
這篇文章主要介紹了Eclipse+Java+Swing+Mysql實(shí)現(xiàn)電影購票系統(tǒng)并附詳細(xì)的代碼詳解,需要的小伙伴可以參考一下2022-01-01