java – 查找数组中的数字总和 – 不包括数字13和它后面的数字
发布时间:2020-12-14 23:57:40 所属栏目: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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |