0

テストフォルダに3つの異なるファイルを保持することにより、以下に示すようなアイデアを実装しました

public class FileCountLine {
public static void main(String[] args) throws FileNotFoundException {

        Map<String, Integer> result = new HashMap<String, Integer>();

        File directory = new File("C:/Test/");
        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);
                }
            }}

        System.out.println(result);     
            }}

しかし、出力としての結果は、以下に示すように、コードの行数をカウントしているファイルがすべて1行になっていることを示しています。

{ValidateWagRewardsRedemptionOptionPPI.java=73, IWalgreensRewardsPosLogSupport.java=134, WagEnrollmentInfoLine.java=111}

結果を以下に示すような出力形式にするようにアドバイスしてください

WalgreensRewardsPosLogSupport.java=134,
WagEnrollmentInfoLine.java=111,
ValidateRewardsAARPManualEntryPPI.java=67

つまり、新しい行自体の各ファイルです。そのために必要な変更を行う必要があるかどうかをアドバイスしてください。

4

5 に答える 5

1

System.out.println(result);と置き換えます

for(String e : result.keySet())
    System.out.println(e+"="+result(e)+"\n")

あなたが得ていたのは、HashMap のデフォルトの toString でした。

于 2012-06-27T17:36:13.427 に答える
0
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

class FileCountLine {
public static void main(String[] args) throws FileNotFoundException {

        Map<String, Integer> result = new HashMap<String, Integer>();

        File directory = new File("/home/joker/Projects/eclipse");
        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 (Exception e) {
                    result.put(file.getName(), lineCount);
                }
            }}

        Set set = result.entrySet() ;
        Iterator itr = set.iterator();
       while(itr.hasNext())
       {
           System.out.println(itr.next()+"\n");
       }


            }}
于 2012-06-27T17:59:40.017 に答える
0

このように HashMap を印刷することはできません

System.out.println(result); 

これを使って

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

それ以外の

System.out.println(result);
于 2012-06-27T17:43:28.530 に答える
0

これを試して....

for( Map.Entry<String, Integer> m : result.entrySet())

{

  System.out.println(m.getKey()+" = "+m.getValue());

}
于 2012-06-27T17:43:34.110 に答える
0
for (Map.Entry<String, Integer> entry : result.entrySet()) {
    String key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key+"="+value+",");
}
于 2012-06-27T17:37:31.263 に答える