有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java迭代Hashmap中的值列表

词法分析程序:使用文本文件,将每个标记按关键字、字符、数字、整数等类别进行分隔

因此,我创建了一个hashMap,其中hashMap中的每个键都必须以一种方式分离,即关键字=[if,then,else],特殊=[(,),;],Character=[a,b,c],所以每个键都有自己的列表

但是我还需要计算每个标记在文本文件中出现的次数,所以我想遍历每个单独的列表,找到每个单词/字符/数字在那里出现的次数,但是肯定有很多糟糕的代码,因为我想不出比if list更好的方法。包含(word)count++,并对每个单词/字符/数字执行此操作


import java.io.*;
import java.util.*;

public class Main {

    private static HashMap<String, ArrayList<String>> map;
    private static ArrayList<String> keys;
    private static ArrayList<String> special;
    private static ArrayList<String> characters;
    private static ArrayList<String> integers;
    private static ArrayList<String> digits;
    private static Token k;

    public static void main(String[] args) {

        map = new HashMap<>();
        keys = new ArrayList<>();
        special = new ArrayList<>();
        characters = new ArrayList<>();
        integers = new ArrayList<>();
        digits = new ArrayList<>();
        k = new Token();

        executeAnalysis();
    }

    private static void executeAnalysis() {
        try {
            File file = new File("/Users/karinaabad/Desktop/HW311.txt");
            Scanner scanner = new Scanner(file);

            while(scanner.hasNext()) {
                String w = scanner.next();
                segregateTokens(w);
            }
            printSummary();
        } catch (FileNotFoundException f) {
            System.out.println("Invalid file input.");
        }
    }

    private static void segregateTokens(String w) {
        if (k.checkKeyword(w))
        {
            keys.add(w);
        }

        if (k.checkSpecial(w)) {
            special.add(w);
        }

        if (k.checkDigit(w)) {
            digits.add(w);
        }

        if (k.checkIntegers(w)) {
            integers.add(w);
        }

        if (k.checkCharacters(w)) {
            characters.add(w);
        }

        map.put("Keyword", keys);
        map.put("Special", special);
        map.put("Digit", digits);
        map.put("Integers", integers);
        map.put("Characters", characters);
    }

    private static void printSummary() {
        System.out.println("==========Summary Report==========");
        for (Map.Entry<String, ArrayList<String>> pair : map.entrySet())
        {
            System.out.println(pair.getKey() + " : " + pair.getValue());
        }
    }

    private static void checkCount() {
        for (Map.Entry<String, ArrayList<String>> key : map.entrySet()) {
            for (String value : )
        }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    循环完成后,println()调用打印一个换行符(在包含整数的行的末尾)

    如果println()不在那里,代码试图打印其他内容,那么它将与整数出现在同一行