You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 10:45:11