当数值大的时候字符串下标越界了
时间: 2023-08-31 15:06:49 浏览: 75
C语言数组和字符串PPT课件.pptx
当数值大的时候,字符串下标越界可能是因为 `f(i)` 返回的值超出了字符串的长度。你可以在截取字符串之前先检查 `f(i)` 的值是否小于等于字符串 `a` 的长度,如果是,再进行截取操作。以下是修改后的代码:
```
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 200000; i++) {
String a = String.valueOf(i * i);
int len = f(i);
if (len <= a.length()) {
int b = Integer.valueOf(a.substring(a.length() - len));
if (b == i) {
System.out.println(i);
}
}
}
}
public static int f(int a) {
int b = 0;
while (a >= 1) {
a /= 10;
b++;
}
return b;
}
}
```
在上面的代码中,我们先计算 `f(i)` 的值,然后检查它是否小于等于字符串 `a` 的长度。如果是,就进行截取操作,否则跳过本次循环。这样就可以避免字符串下标越界的问题。
阅读全文