我是一名学生,正在尝试自己学习编程,从在线资源和像您这样的人那里获得帮助。我在网上发现了一个练习小程序的练习:
编写一个程序,读取数字a和b(类型为long),并列出a和b之间的数字可以被2,3或5整除。
例如:
a=11
b=30
此计数器为14
,因为有14
个号码可被2
,3
或{{1}整除之间:
5
这是我已经尝试过的,但它似乎不起作用。我需要你的指导和帮助来完成这个。感谢您的时间和您的辛勤工作。
12, 14, 15, 16, 18, 20, 21, 22, 24,25, 26, 27, 28, 30
该计划的当前阶段:
import java.util.Scanner;
public class V {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
for (long c = a; c <= b; c++) {
if (c%2 || c%3 || c%5) {
System.out.println(c);
}
}
}
}
还有一件事要做:
现在它列出了可以被2,3或5整除的数字。但我只需要一个数字来计算有多少数字。
答案 0 :(得分:5)
你是正确的 - 你只需要将模数表达式转换为条件 - 即检查余数是否为0。 此外,您应该在循环变量和结果的计数器之间分开:
long c = 0; // counter
for(long l = a; l <= b; l++) {
if (l % 2 == 0|| l % 3 == 0 || l % 5 == 0) {
++c;
}
}
System.out.println(c);
答案 1 :(得分:3)
c%2
返回一个整数,而不是布尔值。
您必须检查if (c%2==0 || ...)
答案 2 :(得分:3)
我会说它甚至没有编译:
if(c%2 || c%3 || c%5)
与c%2
或boolean
不同, C
不会评估为C++
中的==
;
您必须使用等号运算符if(c%2 == 0 || c%3 == 0 || c%5 == 0)
{{1}}
答案 3 :(得分:0)
试试这个:
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
int count = 0; // counter
for (long c = a; c <= b; c++) {
if (c % 2 == 0 || c % 3 == 0 || c % 5 == 0) {//this where the error is in your program
count++;
System.out.println(c);//you are printing c and you are not maintaining the counter
}
}
System.out.println("Counter is " + count);
}
答案 4 :(得分:0)
试试这段代码:
for(int i=a;i<=b;i++){
if(i%2 == 0 || i%3 == 0 || i%5 == 0){
c++;
}
}
答案 5 :(得分:0)
我会回去了解modular arithmetic。假设c = 9,c%5 = 4
。怎么假设被解释为布尔值?
在您的代码中,您可以使用&#34; if(c%2 || c%3 || c%5)
&#34;假设c=9
,则转换为if(1 || 0 || 4)
。在Java中,条件需要写为布尔表达式。您需要编写它们,以便您的答案可以明确地为真或假。
正确的方法是:
if((c % 2 == 0) || (c % 3 == 0) || (c % 5 == 0))
至于计算数字的数量,如果条件为真,则使用单独的变量和增量。