Java 乘以一个数字的数字之和

Java 乘以一个数字的数字之和,java,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.

我很难想出这个问题的解决办法。我需要编写一个程序,通过扫描器获取输入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;
        }
    }
}
Scanner myScanner=新扫描仪(System.in);
int num=myScanner.nextInt();
整数和=0;
对于(int i=0;i<30;i=i+1){
如果(i%13==0){
而(i>0){
int add=i%10;
总和=总和+相加;
i=i/10;
}
}
}

您计算的是数字之和,而不是乘积。另外,循环将是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;
    }
}
Scanner myScanner=新扫描仪(System.in);
int num=myScanner.nextInt();
int prod=1;
for(int i=1;i0){
整数位数=j%10;
数字总和+=数字;
j/=10;
}
prod*=数字总和;
}
}

您的整个代码很乱。您需要在循环、变量赋值和作用域方面做更多的工作。 下面给出的是正确的代码

    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();
Scanner myScanner=新扫描仪(System.in);
int num=myScanner.nextInt();
int mul=1;
对于(int i=1;i0){
总和=总和+(数字%10);
数字=数字/10;
}
mul=mul*总和;
}
}
系统输出打印项次(mul);
myScanner.close();

另一种方法是,将可整除的数字更改为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);
Scanner sc=新扫描仪(System.in);
System.out.println(“输入一个数字:”);
int num=sc.nextInt();
int prod=1;
for(int i=1;i
Stack Overflow是一个问答网站,不是一个家庭作业写作服务。请不要给用户其他理由相信。谢谢。@JoeC在最初的帖子中有明显的“证据表明已经做出了努力”。@Alvin我很抱歉你因为帮助我而被否决。很明显,他已经做出了努力,他甚至不想看帖子本身,只是在整个网站上对我的问题进行了猛烈的否决。对不起@我读了这篇文章,没有发现任何问题。我所看到的只是“这是作业,这是一些代码。”没有什么可以告诉我们您在使用这些代码时遇到了什么问题,或者您为自己调试代码付出了什么努力。仅仅说“这里有一些坏代码,修复它”在这里是不够的。堆栈溢出是一个问答网站,而不是一个家庭作业编写服务。请不要给用户其他理由相信。非常感谢。