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

如何用至多2个全局变量实现Beam Number验证的多void方法Java程序

解决方案:满足作业限制的Beam Number判断代码

修改后的完整代码如下:

import java.util.Scanner;
class Beam3meth
{
    static int sum, m;
    public static void getNum()
    {
        System.out.println("\f"); // 清屏
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number");
        m = sc.nextInt(); 
    }
    public static void squareSum()
    {
        sum = 0;
        int temp = m; // 用局部变量承接原始值,避免修改全局m
        while (temp > 0)
        {
            sum = sum + (temp % 10) * (temp % 10);
            temp = temp / 10;
        }
    }
    public static void isBeam()
    {
        if (sum > m) // 直接用全局m的原始值对比
        {
            System.out.println("It is a Beam number");
        }
        else
        {
            System.out.println("It is not a Beam number");
        }
    }
    public static void main()
    {
        Beam3meth obj = new Beam3meth();
        obj.getNum();
        obj.squareSum();
        obj.isBeam();
    }
}

关键修改说明

  • 保留原有的两个全局变量sum和m,完全符合作业限制:
    • m在getNum(赋值)、squareSum(读取原始值)、isBeam(对比)三个方法中使用,满足“至少在2个方法中使用”的要求
    • sum在squareSum(计算赋值)、isBeam(对比)两个方法中使用,同样符合要求
  • 在squareSum中新增局部变量temp,用它来拆分数字计算平方和,避免直接修改全局变量m,这样m始终保留用户输入的原始值,不需要额外的flag全局变量
  • 移除getNum中的局部flag变量,isBeam直接通过全局变量m获取原始输入值与sum对比

这样修改后,所有方法都是void类型,没有使用返回值或引用传递,仅用2个全局变量就完成了功能,完全满足作业的所有要求。

内容的提问来源于stack exchange,提问作者Gobardas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:36:19