gpt4 book ai didi

java - 为什么我的程序抛出 StringIndexOutOfBounds 异常?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:09 24 4
gpt4 key购买 nike

我正在编写一个程序来计算:

1^1 + 2^2 + 3^3 + ... + 1000^1000 = ?

一旦它计算出来,我想删除答案中除最后十位数字之外的所有数字,然后在屏幕上打印最后十位数字。要删除所有其他数字,我正在使用 StringBuilder.deleteCharAt() 方法,但是,这给我带来了一些问题。我在下面提供了我的代码:

import java.math.BigInteger;
public class problemFourtyEight {
public static void main(String [] args) {
BigInteger answer = new BigInteger(""+0);
for(int i = 0; i <= 1000; i++) {
BigInteger temp = new BigInteger(""+i);
temp = temp.pow(i);
answer = answer.add(temp);
}
System.out.println(answer.toString().length());
StringBuilder sb = new StringBuilder((answer.toString()));
for(int k = 0; k <= (answer.toString().length() - 10); k++) {
sb.deleteCharAt(k); //Line 13 is here.
}
String finalAnswer = sb.toString();
System.out.println(finalAnswer);
}
}

抛出的异常是:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1501
at java.lang.AbstractStringBuilder.deleteCharAt(AbstractStringBuilder.java:797)
at java.lang.StringBuilder.deleteCharAt(StringBuilder.java:253)
at problemFourtyEight.main(problemFourtyEight.java:13)

打印出答案的长度(在删除任何字符之前),它告诉我数字的长度是 3001,所以我不明白为什么说 String index 1,501成为 OutOfBounds

最佳答案

你的错误是这段代码:

StringBuilder sb = new StringBuilder((answer.toString()));
for(int k = 0; k <= (answer.toString().length() - 10); k++) {
sb.deleteCharAt(k); //Line 13 is here.
}

由于字符串生成器的可变性,使字符串更短。你想要:

System.out.println(answer.substring(answer.length()-10))

如果这对您很重要,这还具有速度优势。

关于java - 为什么我的程序抛出 StringIndexOutOfBounds 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com