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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:57:03