我很难找到解决这个问题的方法。我需要编写一个程序来获取输入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;
}
}
}
答案 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);