Java代码本地运行正常提交后报编译错误,求帮忙排查问题
问题排查
1. 直接触发编译错误的问题
你代码中System.out.println("true")这一行末尾缺少Java语法强制要求的分号;,这是编译失败的核心原因。
2. 编译通过后也会导致结果错误的逻辑问题
补全上述分号后代码可正常编译,但运行结果依然不符合预期:
sum变量定义在所有循环外层,每处理完一个数的因子和后没有重置为0,下一轮计算新数字的因子和时会累加之前的结果,导致判断完全错误。需要把int sum = 0移到处理测试用例的for循环内部,每次处理新数字前先初始化sum。- 因子求和的循环条件
j < n可优化为j <= Math.sqrt(n)减少循环次数,属于优化项不影响基础正确性。
修复后可正常运行的完整代码
import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws IOException { Scanner in = new Scanner(System.in); int t = in.nextInt(); for(int i = 0; i < t; i++) { int sum = 0; int n = in.nextInt(); for(int j = 1; j < n; j++) { if(n % j == 0) sum += j; } if(n == sum) System.out.println("true"); else System.out.println("false"); } } }
内容的提问来源于stack exchange,提问作者user17247595
相关产品推荐
相关产品推荐

