首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java循环中的计数器和累加器

java循环中的计数器和累加器
EN

Stack Overflow用户
提问于 2017-11-18 12:34:13
回答 1查看 3.5K关注 0票数 1

我正在做这个程序:给定一个整数,n,如果它的除数之和(不包括自身)等于n,那么这个数字就是完美的。如果和低,它被说是决定性的,如果它是高的,它被说是丰富的。例如:

6有除数1,2,3:它们加6,所以6是完美的。8有除数1,2,4:它们加7,因此8是决定性的。24人有1,2,3,4,6,8,12人:增加36人,因此24人多。

编写一个程序,读取两个正整数,并在屏幕上显示该间隔内每种类型的数字(包括极值)。

我有下面的代码,我知道它在哪里失败,例如,如果我输入一个数字,我很好地完成它,例如条目6和7。如果我输入6和9,输出是完美的1缺陷0富足2,当我应该是完美的1亏2富足0。变量j在变量j中存储所有变量的除数,这就是为什么它很丰富的原因,但是我没有比我尝试的更多的时间来修正它。

代码语言:javascript
复制
import java.util.Scanner;

public class PerfectNumbers {

public static void main(String[] args) {

System.out.println("Enter two numbers for the interval:");
Scanner teclado = new Scanner(System.in);
int x = teclado.nextInt();
int y = teclado.nextInt();

int cont1 = 0;
int perfect = 0;
int deficient = 0;
int abundant = 0;

for (int i = x; i < y; i++) {
    for (int j = 1; j < i; j++) {

        if (i % j == 0) {

            cont1 += j;
        } else {
            cont1 += 0;
        }

    }
    if (cont1 == x) {
        perfect += 1;
    } else if (cont1 < x) {
        deficient += 1;
    } else if (cont1 > x) {
        abundant += 1;
    }
}

System.out.println("Perfect"+ perfect);
System.out.println("Deficient"+ deficient);
System.out.println("Abundant"+ abundant);
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-18 12:50:44

一个问题是您没有重置cont1

另一个问题是,与x相比,您需要与i进行比较,而不是用它来判断完美/不足/丰富。

代码语言:javascript
复制
for (int i = x; i < y; i++) {
    cont1 = 0;
    for (int j = 1; j < i; j++) {
        if (i % j == 0) {
            cont1 += j;
        }
    }

    if (cont1 == i) {
        perfect += 1;
    } else if (cont1 < i) {
        deficient += 1;
    } else {
        abundant += 1;
    }
}

我认为第二个问题很容易被忽视,因为变量的命名很差。我建议对此加以改进,这样就更容易读懂,也更难犯这些错误:

代码语言:javascript
复制
for (int n = start; n < end; n++) {
    sum = 0;
    for (int j = 1; j < n; j++) {
        if (n % j == 0) {
            sum += j;
        }
    }

    if (sum == n) {
        perfect++;
    } else if (sum < n) {
        deficient++;
    } else {
        abundant++;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47366122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档