Java 数组中整数的和
基本上,这些问题要求我找出数组中的数字之和。除了数字“13”是非常不吉利的,所以它不计算“13”和紧跟在“13”之后的数字 这就是我所做的:Java 数组中整数的和,java,arrays,Java,Arrays,基本上,这些问题要求我找出数组中的数字之和。除了数字“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;
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次传球!
sum13{13,1,13}→ 0次传球!
但是,sum13{13,1,2,13,2,1,13}→ 3返回0,因为它在13的第一个实例处停止。您听到continue的作用了吗
为什么要使用两个循环?如果数字是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;
}
在第一个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;
}
根据你的问题,如果数字是13,你就排除在外&它的直接继承者。因此,当您找到13时,再次增加循环计数器:
for(int i=0;i<nums.length;i++){
if(nums[i] == 13) {
i++;
}
else {
sum = sum + nums[i];
}
}
如果数组中有13个元素,这将自然跳过13的下一个元素。实际操作是在13第一次出现时停止
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;
}
试试这个:
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;
}
我没有测试它,但它应该工作
干杯 试试这个
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;
}
使用“继续”按钮;值等于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;
}
试试这个
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;
}
这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时在自己的帖子上发表评论,一旦有足够的评论,您就可以发表评论了。@guerda感谢您的建议。我已经添加了必要的代码块。啊…所以如果我想排除13旁边的数字,我只需要将i增加2?i=+2i已经在每次迭代中递增,当遇到13时,不会进行加法。因此,通过编写i++,我们也跳过了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;
}
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;
}