public class Demo61 { public static void main(String[] args) { for (int i = 1; i <= 3000; i++) { int b = bit(i); int sumb = bit(b); if (sumb == i && i < b) { System.out.println("亲密数是:" + i+b); } } public static int bit(int x){ int bit = 0; for (int i = 1; i < x; i++) { if (bit % i == 0) ; bit += i; } return (bit); } } }哪里错啦
时间: 2024-02-14 18:07:18 浏览: 80
代码存在语法错误,因为缺少了一个右大括号 "}" 来结束 for 循环和 main 方法。这里是修改后的代码:
```
public class Demo61 {
public static void main(String[] args) {
for (int i = 1; i <= 3000; i++) {
int b = bit(i);
int sumb = bit(b);
if (sumb == i && i < b) {
System.out.println("亲密数是:" + i + "和" + b);
}
}
}
public static int bit(int x) {
int bit = 0;
for (int i = 1; i < x; i++) {
if (x % i == 0) {
bit += i;
}
}
return bit;
}
}
```
另外,修正了 bit 方法中的 if 语句,因为应该判断 x 能否被 i 整除,而不是 bit 能否被 i 整除。同时,应该在输出亲密数时,用 "和" 连接两个数。
相关问题
public+class+Demo1{ +public+static+void+main+(+String+[]+args+){ +int+sum+=0; +while+(+true+){ +for
以下是一个示例的Java程序,它计算一个无限循环中的数字之和:
```java
public class Demo1 {
public static void main(String[] args) {
int sum = 0;
while (true) {
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println("Sum: " + sum); }
}
}
```
这个程序会无限循环计算数字1到10的和,并在每次计算后打印出结果。请注意,这个程序没有终止条件,所以它会一直运行下去。
public class Demo8 { public static void main(String[] args) { int sum=0; while(true) { for(int i=1,j=2;i<10;i++) { if(i*j%3==0) continue; sum=sum+i; } if(sum>20) break; } System.out.println(sum); }
这段代码会输出 21。
代码中使用了一个外层的无限循环 `while(true)`,只要内部的条件满足,就会一直执行下去。在循环体中,使用 `for` 循环对变量 `i` 进行迭代操作,初始值为 1,每次迭代将 `i` 的值加 1,直到 `i` 大于等于 10 时,退出循环。在每次迭代中,判断 `i*j` 是否能够被 3 整除,如果能够被 3 整除,则执行 `continue` 语句跳过本次循环,否则将 `i` 的值加到变量 `sum` 中。
在 `for` 循环执行完毕后,判断 `sum` 的值是否大于 20,如果大于 20,则执行 `break` 语句跳出循环。因为当 `i=3` 时,`i*j` 的值为 6,能够被 3 整除,所以在第三次循环中,执行了 `continue` 语句,没有将 `3` 加到变量 `sum` 中。因此,在第四次循环中,`i` 的值为 4,将其加到变量 `sum` 中后,`sum` 的值为 1+2+4=7。然后继续进行下一次循环,直到第六次循环中,`sum` 的值为 1+2+4+5+6=18。在第七次循环中,`i` 的值为 7,将其加到变量 `sum` 中后,`sum` 的值为 1+2+4+5+6+7=25,大于 20,因此执行 `break` 语句跳出循环。
因此,最后输出的 `sum` 的值为 21。
阅读全文