Java编程 - 可分性和计数?

时间:2014-10-31 13:21:52

标签: java

我是一名学生,正在尝试自己学习编程,从在线资源和像您这样的人那里获得帮助。我在网上发现了一个练习小程序的练习:

编写一个程序,读取数字a和b(类型为long),并列出a和b之间的数字可以被2,3或5整除。

例如:

a=11 b=30此计数器为14,因为有14个号码可被23或{{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整除的数字。但我只需要一个数字来计算有多少数字。

6 个答案:

答案 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%2boolean不同,

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))

至于计算数字的数量,如果条件为真,则使用单独的变量和增量。