2 回答
TA贡献1784条经验 获得超2个赞
只是这个循环:
while(k==false)
{
temp=sum;
while(temp>0)
{
sum=sum+(temp%10);
temp=temp/10;
}
if(sum/10==0)
k=true;
}
似乎永远不会结束。
我不知道你想用它做什么,但k不会变成true
,否则会花费很多时间。
在此期间,您认为系统会提示您提供新号码,但您没有。
您只需输入并按回车键即可。
要证明这一点,只需键入ppp. 这应该抛出InputMismatchException但它没有。
TA贡献1788条经验 获得超4个赞
您必须使用关闭扫描仪,sc.close(); 但您的循环仍然存在问题,我已经使用我自己的代码重新植入了代码,现在应该可以使用了。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter 2 numbers as upper and lower bound and all composite numbers between them will be displayed");
int m = sc.nextInt();
int n = sc.nextInt();
sc.close();
if (m < n) {
for (int i = m; i <= n; i++) {
int f = 0;
for (int i2 = 1; i2 <= n; i2++) {
if (n % i2 == 0)
f++;
}
if (f > 2) {
int num = i;
do {
num = sumOfDigits(num);
} while (num > 9);
if (num == 1) {
System.out.println(i);
}
}
}
} else {
System.out.println("Invalid Input");
}
}
public static int sumOfDigits(int n) {
int s = 0;
while (n > 0) {
s += n % 10;
n /= 10;
}
return s;
}
这使得输出
10
19
28
37
46
55
64
73
82
91
100
添加回答
举报