为学校做了以下作业:
要检查给定数字是否可以被9整除,您可以尝试从该数字中取出所有单独数字的总和。当我们得到该总和的结果时,我们可以很容易地检查它是否可以被9整除。
编写一个程序,使用这个给定的方法检查一个数字是否可以被9整除。确保中间的所有总和都记下来,如下例所示。
input 2656
19
10
1
no
input -9999542
47
11
2
no
input 91827
27
9
yes
我首先可以使用模运算符,但由于我被告知这样做,我不知道如何解决这个问题。
有人有任何提示吗?
编辑:不允许使用字符串或数组。
答案 0 :(得分:1)
您可以对所有数字求和,然后检查总和是否可被9整除。使用递归重复逻辑。 E.g。
public class Foo {
public static void main(String[] args) {
int input1 = 2656;
int input2 = -9999542;
int input3 = 91827;
System.out.println("\n" + "input " + input1);
check(input1);
System.out.println("\n" + "input " + input2);
check(input2);
System.out.println("\n" + "input " + input3);
check(input3);
}
public static boolean check(int input) {
int sum = calculateSum(input);
System.out.println(sum);
if (sum < 9) {
System.out.println("no");
return false;
}
if ((double) sum / 9 == 1.0) {
System.out.println("yes");
return true;
}
return check(sum);
}
private static int calculateSum(int digits)
{
int sum = 0;
digits = digits < 0 ? -1 * digits : digits;
while ( digits > 0 )
{
sum += digits % 10;
digits /= 10;
}
return sum;
}
}
输出
input 2656
19
10
1
no
input -9999542
47
11
2
no
input 91827
27
9
yes
答案 1 :(得分:1)
int x = Integer.parseInt(args[0]), help = 0, sum= 0;
if (x < 0) {
x *= -1;
}
do {
while(x != 0) {
help = x % 10;
sum += help;
x /= 10;
}
System.out.println(sum);
if(sum >= 10) {
x = sum;
sum = 0;
}
}while(x >= 10);
if(sum / 9 == 1) {
System.out.println("yes");
} else {
System.out.println("no");
}