如何用至多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
相关产品推荐
相关产品推荐

