所以,基本上,问题要求我找到数组中数字的总和。除了数字' 13'是非常不走运的,所以它不算数' 13'以及' 13'之后的数字。
这就是我所做的:
public int sum13(int[] nums) {
int d = 0;
int sum = 0;
for (int i=0;i<nums.length;i++){
if(nums[i] == 13){
d = i;
break;
}
else{
d = nums.length;
}
}
for(int i=0;i<d;i++){
sum = sum + nums[i];
}
return sum;
}
即使我通过了大部分测试,我仍然无法理解如何从总和中排除13旁边的数字。
例如,sum13({1,2,2,1,13})→6 PASSES! sum13({13,1,13})→0通过! 但是,sum13({13,1,2,13,2,1,13})→3返回0,因为它在13的第一个实例停止。
答案 0 :(得分:6)
为什么使用两个循环?如果数字为13
,则不要将其添加到总和中,或者将下一个数字添加到总和中,如下所示:
public int sum13(int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 13) {
i++;
} else {
sum = sum + nums[i];
}
}
return sum;
}
答案 1 :(得分:4)
根据您的问题,如果数字是13&amp;它的直接继承者。所以当你发现13再次增加循环计数器时:
for(int i=0;i<nums.length;i++){
if(nums[i] == 13) {
i++;
}
else {
sum = sum + nums[i];
}
}
如果数组中有一个元素,这自然会跳过13的下一个元素。
答案 2 :(得分:2)
如何直接在第一个for
循环中求和?更短,更容易,更快捷的方式:)
public int sum13(int[] nums) {
int sum = 0;
for (int i=0;i<nums.length;i++){
if (nums[i] != 13) {
sum += nums[i];
} else {
i++;
}
}
return sum;
}
答案 3 :(得分:1)
你听说continue
做了什么吗?
if(nums[i] == 13){
d = i;
continue;
}
答案 4 :(得分:0)
public int sum13(int[] nums) {
boolean skip = false;
int sum = 0;
for (int i=0;i<nums.length;i++){
if(nums[i] == 13){
skip=true;
continue;
}
else{
if(skip) {
skip=false;
continue;
}
sum+=nums[i];
}
}
return sum;
}
答案 5 :(得分:0)
你实际做的是在第一次出现13时停止。
试试这个:
public int sum13(int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 13) {
i++;
} else {
sum += nums[i];
}
}
return sum;
}
我没有测试它,但它应该工作......
干杯!
答案 6 :(得分:0)
试试这个
public int mySum(int[] nums, int except) {
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += (nums[i] == except) ? 0: nums[i];
}
return sum;
}
然后
mySum(nums, 13)
答案 7 :(得分:0)
使用继续;当值等于13时的语句。
public int sum13(int[] nums) {
int sum = 0;
for (int i=0;i<nums.length;i++){
if(nums[i] == 13){
continue;
}
else{
sum = sum + nums[i];
}
}
return sum;
}
答案 8 :(得分:0)
试试这个。
public int sum(int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length;) {
if (nums[i] == 13)
i = i + 2;
else {
sum = sum + nums[i];
i++;
}
}
return sum;
}