Java如何在一个方法中获取其他方法的执行结果并统一打印输出
Java代码调整方案
原代码存在的问题
- 所有输入方法均为
void无返回类型,输入的内容仅存储在方法内部的局部变量中,方法执行结束后变量就会被销毁,result()方法无法访问到这些输入值 - 每个输入方法都重复创建
Scanner对象,属于冗余操作,还可能引发输入流异常 - 读取全名使用
next()方法不合理,只要输入内容包含空格就会被截断,应该用nextLine()方法 - main方法仅调用了输入方法,最后没有调用
result()执行统一输出逻辑
修正后完整代码
package labexer1a; import java.util.Scanner; public class LabExer1A { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 接收所有输入方法的返回值 int myFaveNumber = faveNumber(scanner); // 处理nextInt遗留的换行符,避免后续nextLine读空 scanner.nextLine(); String myFaveCartChar = faveCartChar(scanner); String myMI = mI(scanner); String myFullName = fullName(scanner); String myNickName = nickName(scanner); // 调用结果输出方法,传入所有收集到的值 result(myFaveNumber, myFaveCartChar, myFullName, myNickName); scanner.close(); } // 修改返回值类型为int,接收共用的Scanner对象 public static int faveNumber(Scanner s) { System.out.print("Type your Number: "); return s.nextInt(); } public static String faveCartChar(Scanner s) { System.out.print("Type your favorite Cartoon or Anime Character: "); return s.nextLine(); } public static String mI(Scanner s) { System.out.print("Type your Middle Initial: "); return s.nextLine(); } public static String fullName(Scanner s) { System.out.print("Type your FullName: "); return s.nextLine(); } public static String nickName(Scanner s) { System.out.print("Type your Nickname: "); return s.nextLine(); } // 给result方法添加参数,接收所有需要输出的值 public static void result(int faveNumber, String faveCartChar, String fullName, String nickName) { System.out.println(faveNumber + " is my favorite number"); System.out.println("I love " + faveCartChar); System.out.println("My name is " + fullName); System.out.println("You can call me " + nickName); } }
核心修改点说明
- 将所有输入方法的返回类型从
void改为对应的数据类型,输入完成后直接返回获取到的值,不需要在方法内定义局部变量存储 - 统一在main方法中创建唯一的
Scanner对象,作为参数传递给所有输入方法使用,使用完成后统一关闭 - 优化了输入方法的逻辑,修复了数字输入后换行符残留导致后续字符串读取为空的问题,同时读取含空格的内容统一使用
nextLine() - 给
result()方法添加对应参数,接收main方法中收集到的所有输入值,最后在main方法末尾调用result()执行统一输出
内容的提问来源于stack exchange,提问作者Mnemosyne
相关产品推荐
相关产品推荐

