【发布时间】:2014-01-07 03:35:25
【问题描述】:
我一直在研究一个 Java 实验室,希望我们让用户输入最多 50 位的两位数字并将它们相加。除了两个数组的长度不同时,我已经成功地完成了所有事情。我一直在玩弄代码一段时间,但我一直在做空。任何人都可以查看此代码并提出任何建议吗?谢谢!
int[] number1 = new int[input1.length()];
int[] number2 = new int[input2.length()];
int[] answer = new int[input1.length()];
if(number1.length > number2.length){
number2 = new int[number1.length];
for(int i = 0; i < number2.length - number1.length; i++){
number2[i] = 0;
}
}
if(number2.length > number1.length){
number1 = new int[number2.length];
for(int i = 0; i < number1.length - number2.length; i++){
number1[i] = 0;
}
}
每当我添加 120 和 12 时,它都会显示数组越界错误。
【问题讨论】:
-
Java 将初始化您的 int 数组,所有值都为零。所以你实际上对你的 for 循环什么都不做。我不确定您要使用代码完成什么,但我建议您重新评估问题并重试
-
我假设您正在模拟算术。如果用户输入 9 和 9,答案将如何适合大小为 1 的数组?
-
@Bohemian 抱歉,这只是与问题相关的代码部分。我的代码的其余部分可以容纳 9 + 9 以使其等于 18,这只是如果数字大小不同我会遇到问题的部分。
-
考虑到您的两个 if 语句,您的 for 循环从未执行过;
if(number2.length > number1.length)然后number1.length - number2.length小于 0 因此i永远不会是<然后是减法的结果。第一个if声明也是如此。 -
您在创建计算器吗?总共 18 个是否会导致数组的不同元素分别为 1 和 8?
标签: java arrays if-statement for-loop int