【发布时间】:2015-04-07 14:49:28
【问题描述】:
我的程序需要:
返回数组中数字的总和,忽略的部分除外 以 6 开头并延伸到下一个 7 的数字(每 6 个 后跟至少一个 7)
返回 0 表示没有数字
例子:
sum67({1, 2, 2}) → 5
sum67({1, 2, 2, 6, 99, 99, 7}) → 5
sum67({1, 1, 6, 7, 2}) → 4
我试过了,但它不适用于接下来的 6 和 7
public int sum67(int[] nums) {
int sixIndex=0;
int sevenIndex=0;
int sum = 0, flag=0;
if(nums.length !=0) {
for(int a=0; a<nums.length; a++) {
if(nums[a] == 6 ) {
flag = 1;
break;
}
}
if(flag == 1) {
for(int i =0; i < nums.length; i++) {
if(nums[i] == 6) sixIndex= i;
if(nums[i] == 7) sevenIndex = i;
}
for(int j = 0; j<nums.length; j++) {
if(j == sixIndex) break;
sum+=nums[j];
}
for(int k = sevenIndex+1; k<nums.length; k++) {
if(k == sevenIndex) break;
sum+=nums[k];
}
}
else {
for(int b = 0; b<nums.length; b++) {
sum+=nums[b];
}
}
}
return sum;
}
【问题讨论】:
-
请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。
-
我猜这是作业。这是来自 codingbat (codingbat.com/prob/p111327) 的练习。 StackOverflow 不是一个让人们为你完成作业的网站。我们需要一个具体的问题。
-
这读起来就像你只是在这里复制和粘贴你的作业。请展示您到目前为止的尝试并解释您的实际问题。
-
别偷懒。自己试试这个。把自己扔到问题上。让你的大脑受伤。斗争。将其全部删除,然后重试。尝试。尝试。再试一次。不要让别人给你灌汤式的答案,从而剥夺你的学习体验。
-
我试过但忘记写下我的努力,但在编辑问题之前我得到了 -6 :(。现在我已经更新了我的问题