我正在尝试做欧拉问题6放在用户输入他们想要的数字平方差的地方。程序在我运行它的那一刻就消失了,我感觉到它是因为从输入字符串转换为我用来实际进行数学计算的数组。我看了整整一遍谷歌并且找不到任何对我有用的东西来修复它。我刚刚开始编程,所以很多修复工作都是将字符串转换为int数组。
编辑:我死的意思是,当我尝试任何输入时,应用程序崩溃我要求它解决“不幸的项目Euler已停止”错误消息。
这是我的代码:
public String solve(String input) {
try {
StringTokenizer strToken = new StringTokenizer(input);
int count = strToken.countTokens();
int[] arr = new int[count];
for(int x = 0;x < count;x++){
arr[x] = Integer.parseInt((String)strToken.nextElement());
}
return String.valueOf(solve(arr));
} catch (NumberFormatException ex) {
return "Please only enter an integer";
} catch (IllegalArgumentException ex) {
return ex.getMessage();
}
}
private int solve(int[] number){
int sumSquared=0;
int squaredSum=0;
int i;
int answer;
for(i=0;i<=number.length;i++){
sumSquared=number[i]+sumSquared;
}
for(i=0;i<number.length;i++){
squaredSum= (int) (Math.pow(number[i],2)+squaredSum);
}
sumSquared= (int) Math.pow(sumSquared,2);
answer=sumSquared+squaredSum;
return answer ;
}
}
答案 0 :(得分:1)
好的,既然你似乎无法获得确切的异常,我只是运行你的代码,这就是它失败的原因:
for(i=0;i<=number.length;i++){
sumSquared=number[i]+sumSquared;
}
这会引发ArrayIndexOutOfBoundsException
异常。一旦我纠正了这个
for(i=0;i< number.length;i++){
sumSquared=number[i]+sumSquared;
}
代码运行良好。