帮我查错public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(true) { System.out.println("请输入一个数:"); int n=sc.nextInt(); if(n>99&&n<1000) { for(int i=0;i<=n;i++) { int sum=0; for(int j=0 ; j<=i ; j++) { if(i%j==0) { sum+=j; } } if(sum==i) { System.out.println(sum); } } break; }else { System.out.println("输入错误"); } } }
时间: 2023-12-01 14:04:54 浏览: 161
C#中static void Main(string[] args) 参数示例详解
在这段代码中,if语句中的条件应该是 n>=100 && n<=999 而不是 n>99 && n<1000,因为题目要求是输入的数必须是三位数。同时,在for循环中,j应该从1开始循环而不是从0开始,因为不能除以0。修改后的代码如下:
```
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("请输入一个数:");
int n = sc.nextInt();
if(n >= 100 && n <= 999) {
for(int i = 100; i <= n; i++) {
int sum = 0;
for(int j = 1; j <= i; j++) {
if(i % j == 0) {
sum += j;
}
}
if(sum == i) {
System.out.println(sum);
}
}
break;
} else {
System.out.println("输入错误");
}
}
}
```
这样就可以正确地输出100到输入的三位数之间的所有完数了。
阅读全文