Java如何将方法获取的输入值传递给其他方法无需重复执行流程
Java方法间传递已校验输入值的实现方案
核心解决逻辑:将第一个方法返回的、已经完成输入校验的结果,作为参数直接传递给第二个方法,无需在第二个方法内重复触发输入校验流程。
原有代码存在的问题
- main方法中已经调用
first_method()获取到了校验后的整数,存储在变量an中,但没有传递给second_method() second_method()内部重复调用first_method(),导致重复执行输入、校验逻辑- 代码冗余问题:
first_method()的形参与内部局部变量重名,会触发编译错误;多处重复创建Scanner实例无意义
修正后可运行代码
import java.util.Scanner; import java.util.InputMismatchException; public class TestInputPass { //Main method public static void main(String[] args) { int an = first_method(); // 直接把已校验的结果传给第二个方法 second_method(an); } // 优化后删除无意义的形参,内部完成输入校验后返回结果 static int first_method() { Scanner reader = new Scanner(System.in); boolean done = false; int num = 0; while(!done) { try { System.out.print("Enter a Number: \t\t"); num = reader.nextInt(); done = true; } catch (InputMismatchException e) { String s = reader.nextLine(); System.out.println("Invalid a number: " + s); } } return num; } // 新增入参接收外部传入的已校验数值 static void second_method(int validNum) { // 直接使用传入的数值,无需重复调用输入方法 System.out.println(validNum); } }
核心修改点说明
- 为
second_method()新增int类型的入参,用来接收外部传入的已完成校验的数值 - main方法调用
second_method()时,直接将first_method()返回的结果作为参数传入 - 删除
second_method()内部调用first_method()的冗余逻辑,避免重复执行输入校验流程 - 修复原有
first_method()的变量重名问题,删除无意义的形参,避免编译错误
内容的提问来源于stack exchange,提问作者Lux Luciora
相关产品推荐
相关产品推荐

