多个

时间:2018-03-13 19:35:50

标签: java

我很难找到解决这个问题的方法。我需要编写一个程序来获取输入n(通过扫描程序),然后使用for循环直到输入数字,检查数字是否可以被13整除,然后乘以每个数字的数字。

因此,举例来说,如果输入数字是40,那么13的可分数将是13,26,39

1+3 = 4,
2+6 = 8,
3+9 = 12

所以4 * 8 * 12 = 384。

我目前的代码,但我被困在这里。我也许做得不对:

Scanner myScanner = new Scanner(System.in);

int num = myScanner.nextInt();
int sum = 0;

for (int i = 0; i < 30; i = i + 1) {
    if (i % 13 == 0) {
        while (i > 0) {
            int add = i % 10;
            sum = sum + add;
            i = i / 10;
        }
    }
}

3 个答案:

答案 0 :(得分:-1)

您计算的是数字的总和,而不是产品。此外,你的循环是30,而不是num。 (也没有理由在0而不是1开始循环。)最后,你不应该在循环内部改变i;这将搞砸迭代逻辑。使用辅助变量。这样的事情(未经测试)应该有效:

Scanner myScanner = new Scanner(System.in);

int num = myScanner.nextInt();
int prod = 1;

for (int i = 1; i < num; i++) {
    if (i % 13 == 0) {
        int j = i,
            sumOfDigits = 0;
        while (j > 0) {
            int digit = j % 10;
            sumOfDigits += digit;
            j /= 10;
        }
        prod *= sumOfDigits;
    }
}

答案 1 :(得分:-1)

你的整个代码很乱。您需要在循环和变量赋值和范围上进行更多工作。 以下是正确的代码。

    Scanner myScanner = new Scanner(System.in);

    int num = myScanner.nextInt();

    int mul = 1;
    for (int i = 1; i < num; i = i + 1) {
        if (i % 13 == 0) {
            int sum = 0;
            int number = i; // = some int

            while (number > 0) {
                sum = sum + (number % 10);
                number = number / 10;
            }
            mul = mul * sum;
        }
    }
    System.out.println(mul);
    myScanner.close();

答案 2 :(得分:-1)

另一种方法,更改可以对char数组进行整除的数字,然后添加和相乘。

   Scanner sc=new Scanner(System.in);

    System.out.println("Enter a number: ");
    int num = sc.nextInt();
    int prod = 1;



    for (int i = 1; i < num; i++) {
        if (i % 13 == 0) {

            String number = String.valueOf(i);
            char[] digits1 = number.toCharArray();

            int sum = 0;

            for (char ii:digits1) {

                sum = Character.getNumericValue(ii) + sum;

            }
            prod = prod*sum;
        }
    }

    System.out.println(prod);