Java中while循环外声明的rem变量循环后访问报错问题排查
Java代码问题说明
存在的具体问题
- 变量名拼写错误:while循环内部赋值时使用了未声明的变量
r,你实际声明的存储余数的变量是rem,导致rem从未被正确赋值。 - 引用了未声明的变量:输出语句中使用的
divisor变量没有提前声明定义,直接触发编译错误。 - 局部变量未初始化风险:如果输入的两个数第一次取余就为0(比如n1=10,n2=5),while循环不会执行,你声明的
rem作为局部变量没有默认初始值,后续直接访问会触发「变量可能未初始化」的编译错误。
修正后的可运行代码
import java.util.*; public class Gcd { // 类名符合Java规范首字母大写 public static void main(String[] args){ Scanner scn = new Scanner(System.in); int n1 = scn.nextInt(); int n2 = scn.nextInt(); // 提前处理除数为0的异常场景 if (n2 == 0) { System.out.println("除数不能为0"); scn.close(); return; } int rem = n1 % n2; // 提前初始化余数变量避免未初始化问题 while(rem != 0 ){ n1 = n2; n2 = rem; rem = n1 % n2; } System.out.println("gcd is :"+ n2); // 循环结束时n2即为最大公约数 scn.close(); } }
内容的提问来源于stack exchange,提问作者Surya Bhardwaj
相关产品推荐
相关产品推荐

