如何在java中修复字符串太长的异常

时间:2016-04-09 07:20:46

标签: java

我有一个分析字符串的算法,但它只需要大约10000个字符,它将抛出异常

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constant string too long

这是我使用

的代码
public static void printRepeatingStrings(String inputString, int sequenceLength) {
    if (inputString.isEmpty() || sequenceLength <= 0 || sequenceLength >= inputString.length()) {
        System.out.println("Invalid input");
    } else {
        int i = 0;
        int j = i + sequenceLength;
        Set<String> tempSet = new HashSet<>();
        Set<String> repeatingSequences = new TreeSet<>();
        while (j <= inputString.length()) {
            if (!tempSet.add(inputString.substring(i, j))) {
                repeatingSequences.add(inputString.substring(i, j));
            }
            i++;
            j = i + sequenceLength;
        }
        for (String str : repeatingSequences) {
            System.out.println(str);
        }
    }
}

如果你能帮助我解决这个问题非常有帮助

2 个答案:

答案 0 :(得分:1)

请参阅Java "constant string too long" compile error. Only happens using Ant, not when using Eclipse

有人说,在UTF-8编码中,类文件中字符串常量的长度限制为2 ^ 16字节。

如果你不使用这么长的常量,那么otpimizing编译器可能会在main函数中与静态表达式进行一些串联。

答案 1 :(得分:0)

你应该能够获得一个长度为Integer.MAX_VALUE的字符串(Java规范始终为2147483647(231-1),数组的最大大小,String类用于内部存储)或最大堆的一半大小(因为每个字符是两个字节),以较小者为准。