数组用java编写一个程序来打印从50到250(包括50和250)的所有数字的总和,这些数字是3的倍数,不能被9整除
/*当我运行此代码时,没有错误,事实上生成的输出也是正确的,但我想知道此代码中的逻辑错误是什么?请任何人解释一下逻辑错误是什么*/
class abc
{
public static void main(String arg[]){
int sum=0;
//for-loop for numbers 50-250
for(int i=50;i<251;i++){
// condition to check if number should be divided by 3 and not divided by 9
if(i%3==0 & i%9!=0){
//individual number which are selected in loop
System.out.println(i);
//adding values of array so that total sum can be calculated
sum=sum+i;
}
}
//final display output for the code
System.out.println("the sum of intergers from 50 to 250 that are multiples of 3 and not divisible by 9 \n"+sum);
}
}
# 1 楼答案
改变这一点:
为此:
&;=位与运算符
&&;=逻辑运算符
Difference between & and && in Java?
# 2 楼答案
我的理念是“更少的代码=更少的bug”:
一行。易于阅读和理解。没有虫子
# 3 楼答案
我看到的唯一问题是:
sum
未声明&&
代替&
# 4 楼答案
嗯,不是像你在这里所做的那样从50到250触摸每一个值^ {CD1>},你可以考虑这样的事情…
这在某种程度上是优化的,因为我跳过了我知道不可能的候选值
但是,代码中有一个更大的问题。下面的代码块打印
true
,当然。但是,依赖&
是一个坏主意,因为这不是它的工作。&
表示按位AND,而&&
表示逻辑AND,这正是您要做的为什么
在Java中,如果它是一个
&&
操作,只要找到第一个false
,就可以确定表达式的计算结果为false。同时,在实施过程中,需要对双方进行评估f&t
的计算结果将为false,但JVM需要同时查看f
和t
变量。同时,在使用&&
时,它甚至不需要查看t