0

ユーザーが特定のフォルダーを選択し、そのフォルダー内のすべてのファイルとそれらの個々のファイルのコード行がカウントされ、コンソールにファイル名とコード行が表示されるアプリケーションがあります。 .ここに私のコードがあります...

Map<String, Integer> result = new HashMap<String, Integer>();  
                File directory = new File(chooser.getSelectedFile().getAbsolutePath());   
                File[] files = directory.listFiles();  
                for (File file : files)  
                {  
                    if (file.isFile())  
                    {    Scanner scanner = new Scanner(new FileReader(file));  
                        int lineCount = 0;  
                        try  
                        { for (lineCount = 0; scanner.nextLine() != null; lineCount++) ;  
                        } catch (NoSuchElementException e)  
                        {   result.put(file.getName(), lineCount);  
                        }  
                    }  
                }  
                for (Map.Entry<String, Integer> entry : result.entrySet())  
                {   System.out.println(entry.getKey() + " ==> " + entry.getValue());  
                }  }  

しかし、もう1つ機能を追加したいのですが、すべてのファイルの合計行数も表示する必要があります。これらの6つの個別のファイルにそれぞれ10行のコードがあると仮定すると、行数の合計は10 * 6であり、合計60行が読み取られます。これを達成してくださいアドバイスしてください

4

2 に答える 2

1

Map エントリ値ごとにカウンターを追加し、それをカウンター/アキュムレータに追加して、後で出力しないのはなぜですか。

                Map<String, Integer> result = new HashMap<String, Integer>();  
                File directory = new File(chooser.getSelectedFile().getAbsolutePath());   
                File[] files = directory.listFiles();  

                for (File file : files)  
                {  
                    if (file.isFile())  
                    {    
                        Scanner scanner = new Scanner(new FileReader(file));  
                        int lineCount = 0;  

                        try  
                        { for (lineCount = 0; scanner.nextLine() != null; lineCount++);  
                        } catch (NoSuchElementException e)  
                        {   result.put(file.getName(), lineCount);  
                        }  

                    }  
                }  

                int lineCounter = 0;  
                for (Map.Entry<String, Integer> entry : result.entrySet())  
                {  
                    System.out.println(entry.getKey() + " ==> " + entry.getValue());
                    lineCounter+=entry.getValue();  
                }  
                 System.out.println(String.valueOf(lineCounter));
于 2012-06-28T14:51:55.843 に答える
0

読み取り中のすべてのファイルの合計行数を表示するには、各ファイルの行数を別の変数に合計する必要があります。

Map<String, Integer> result = new HashMap<String, Integer>();  
            File directory = new File(chooser.getSelectedFile().getAbsolutePath());   
            File[] files = directory.listFiles();
            int totalLineCount = 0;
            for (File file : files)  
            {  
                if (file.isFile())  
                {    Scanner scanner = new Scanner(new FileReader(file));  
                    int lineCount = 0;  
                    try  
                    { for (lineCount = 0; scanner.nextLine() != null; lineCount++) ;  
                    } catch (NoSuchElementException e)  
                    {   result.put(file.getName(), lineCount);
                        totalLineCount += lineCount;   
                    }  
                }  
            }
             System.out.println("Total line count = "+ totalLineCount);

            for (Map.Entry<String, Integer> entry : result.entrySet())  
            {   System.out.println(entry.getKey() + " ==> " + entry.getValue());  
            }  } 

したがって、それぞれ 6 行のファイルが 10 個ある場合、totalLineCount は 60 になります。

于 2012-06-28T15:00:41.033 に答える