我做了以下方法:
static int GenerateSeccondPal(int x){
String y = Integer.toString(x);
char[] z1 = y.toCharArray();
char[] z2 = new char[y.length() / 2];
for (int count = (z1.length /2); count <= z1.length; count++) {
z2[count] = z1[count];
}
return Integer.parseInt(new String(z2));
}
但是,当我运行它时,我收到此错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at challenges.Problem_4.GenerateSeccondPal(Problem_4.java:31) at challenges.Problem_4.main(Problem_4.java:6)
这很奇怪,因为我制作的另一种方法:
static int GenerateFirstPal(int x) {
String y = Integer.toString(x);
char[] z1 = y.toCharArray();
char[] z2 = new char[z1.length / 2];
for (int count = 0; count < z1.length / 2; count++) {
z2[count] = z1[count];
}
return Integer.parseInt(new String(z2));
}
工作完美。我写的有什么问题吗?
最佳答案
其他人指出了数组问题,但我根本不明白你为什么要使用数组。只需使用子字符串
:
static int generateFirstPal(int x) {
String y = String.valueOf(x);
String firstPart = y.substring(0, y.length() / 2);
return Integer.parseInt(firstPart);
}
static int generateSecondPal(int x) {
String y = String.valueOf(x);
String secondPart = y.substring(y.length() / 2);
return Integer.parseInt(secondPart);
}
坦白说,无论如何,这看起来都是一个奇怪的设计......您确定首先这是正确的行为吗?鉴于您正在处理数字,根本不清楚为什么需要字符串表示形式。根据字符串的预期长度,我期望如下所示:
static int generateFirstPal(int x) {
return x / 1000;
}
static int generateSecondPal(int x) {
return x % 1000;
}
例如,这会将 123456 拆分为 123 和 456。根据您的实际值调整 1000。
关于java - ArrayIndexOutOfBoundsException 的数组足够大,可以容纳我提供的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6573965/