Java 乘以一个数字的数字之和
我很难想出这个问题的解决办法。我需要编写一个程序,通过扫描器获取输入n,然后进行for循环,直到输入数字,检查数字是否可以被13整除,然后将每个数字的位数相乘 举个例子,如果输入的数字是40,那么13可以整除的数字是13,26,39Java 乘以一个数字的数字之和,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.
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我很抱歉你因为帮助我而被否决。很明显,他已经做出了努力,他甚至不想看帖子本身,只是在整个网站上对我的问题进行了猛烈的否决。对不起@我读了这篇文章,没有发现任何问题。我所看到的只是“这是作业,这是一些代码。”没有什么可以告诉我们您在使用这些代码时遇到了什么问题,或者您为自己调试代码付出了什么努力。仅仅说“这里有一些坏代码,修复它”在这里是不够的。堆栈溢出是一个问答网站,而不是一个家庭作业编写服务。请不要给用户其他理由相信。非常感谢。