我有一个分析字符串的算法,但它只需要大约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);
}
}
}
如果你能帮助我解决这个问题非常有帮助
答案 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类用于内部存储)或最大堆的一半大小(因为每个字符是两个字节),以较小者为准。