Java创建含min、max、isEven、square方法的类调用报错求助
报错原因
你的isEven方法定义时明确要求接收1个int类型的入参,但是在main方法中调用MyMath.isEven()时没有传入任何参数,实际参数和形式参数的数量不匹配,因此触发编译报错。
另外你当前的代码还存在一个冗余问题:构造方法接收了两个int参数,但没有将参数值保存到类的成员变量中,传入的3和4后续无法被类的方法直接使用。
解决方法
你可以根据自己的需求选择任意一种方案修改:
方案1:调用方法时传入对应参数
不需要修改方法定义,仅修改main方法中的调用逻辑,调用所有方法时按照定义传入对应数量的参数即可,示例:
public static void main(String[] args){ hw8 MyMath = new hw8(3, 4); // 传入要判断是否为偶数的整数,比如判断3就传3 MyMath.isEven(3); // 其他方法调用示例 MyMath.min(3,4); MyMath.max(3,4); MyMath.square(4); }
方案2:改造类结构,保存初始化传入的参数
如果你希望实例化时传入的两个参数可以直接被后续方法复用,不需要每次调用都传参,可以修改类的结构,新增成员变量存储参数,按需调整方法逻辑:
import java.util.*; public class hw8{ // 新增成员变量存储初始化传入的两个数 private int num1; private int num2; public hw8(int a, int b){ // 将入参赋值给成员变量 this.num1 = a; this.num2 = b; } public void min(){ System.out.println(Math.min(num1, num2)); } public void max(){ System.out.println(Math.max(num1, num2)); } // 可自行选择判断num1还是num2,这里示例判断num1 public void isEven(){ System.out.println(num1 % 2 == 0); } // 可自行选择计算num1还是num2的平方,这里示例计算num2 public void square(){ System.out.println(num2 * num2); } public static void main(String[] args){ hw8 MyMath = new hw8(3, 4); // 不需要传参直接调用即可 MyMath.isEven(); MyMath.min(); MyMath.max(); MyMath.square(); } }
额外优化建议
- Java类名建议遵循大驼峰命名规范,将
hw8改为Hw8更符合行业通用编码规范 - 如果方法需要更高的复用性,建议调整为有返回值的形式,比如
public boolean isEven(int a),方法内返回判断结果,而不是直接打印结果,方便其他业务逻辑调用该方法的返回值做后续处理。
内容的提问来源于stack exchange,提问作者flopprfr
相关产品推荐
相关产品推荐

