java – 查找数组中的数字总和 – 不包括数字13和它后面的数字
发布时间:2020-05-28 19:35:48 所属栏目:Java 来源:互联网
导读:我想用 Java编写一个程序,给定一个数组,找到数组中所有数字的总和 – 有一个例外!由于数字13非常不吉利,我建议我们将完全排除数字13,以及直接在13之后的数字(如果存在的话)从总和中排除. 该程序,我将称之为sum13,应该从以下输入产生以下结果(这些只是几个例
|
我想用 Java编写一个程序,给定一个数组,找到数组中所有数字的总和 – 有一个例外!由于数字13非常不吉利,我建议我们将完全排除数字13,以及直接在13之后的数字(如果存在的话)从总和中排除. 该程序,我将称之为sum13,应该从以下输入产生以下结果(这些只是几个例子): sum13([1,2,1])= 6这个是正常的;没有13在这里. sum13([5,13,2])= 5 13和13之后的数字被排除在外. sum13([13,13])= 0数组只包含13个,因此它们都不包括在内. sum13([1,1,13])= 4一个稍长的预期输出示例. 这是我为sum13提出的代码: public int sum13(int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length; i++) {
// we start by adding all the non-13s to the sum
if (nums[i] != 13) sum += nums[i];
}
// now we go back and remove all the non-13s directly after a 13
for (int j = 0; j < nums.length; j++) {
// the outermost loop checks if the numbers are a 13
if (nums[j] == 13 && j < nums.length - 1) {
for (int k = j + 1; k < nums.length; k++) {
// this loop checks that the number after the 13 is not a 13
if (nums[k] != 13) {
sum -= nums[k];
break;
}
}
}
}
return sum;
}
上面的程序有效,虽然看起来确实很混乱! 有没有更好的方法来编写这样一个不包含多个循环和嵌套ifs的程序? 解决方法好吧,你用i作为迭代器.当当前的数字是13时,只需要我.这样,你不仅不会在总和上加13,而且你也跳过下一个值.public int sum13(int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length; i++) {
// we start by adding all the non-13s to the sum
if (nums[i] != 13){
sum += nums[i];
}
else {
i++;
}
}
return sum;
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
