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

Java开发中如何跨方法使用获取到的用户输入字符串

问题原因&修复方案

核心问题排查

  • 首先你的程序不符合Java的入口方法规范:Java程序的主入口方法必须声明为public static void main(String[] args),你当前的main方法缺少static修饰符,JVM无法识别到合法的程序入口,你写的业务逻辑根本没有被执行,自然没有输出。
  • 成员变量初始化逻辑不合理:你将Scanner实例化、读取用户输入的代码直接放在类的成员变量定义区域,这部分代码只会在Program类的实例被创建时才会执行,没有实例化的前提下不会触发输入读取,也不会产生后续的处理结果。
  • 静态上下文访问规则不匹配:你之前只给方法加static但没有同步调整变量的修饰符,会触发「静态方法无法访问非静态成员」的编译错误,自然无法正常运行。

修复后代码

import java.util.Scanner;

public class Program
{
    // 仅保留公用的Scanner作为成员变量
    private Scanner read = new Scanner(System.in);
    
    // 修正为符合规范的静态入口方法
    public static void main(String[] args) {
        // 先实例化Program类,触发成员变量初始化
        Program program = new Program();
        // 在实例上下文中执行业务逻辑
        program.domainCharLimit();
    }
    
    public void domainCharLimit() {
        // 将输入读取移到方法内,按需执行
        String firstName = read.nextLine().replace("'", "");
        String lastName = read.nextLine().replace("'", "");
        String domainUsername = firstName + "." + lastName;
        if (domainUsername.length()>20) {
            domainUsername = domainUsername.substring(0, 20);
        }
        System.out.print(domainUsername);
        read.close();
    }    
}

修改点说明

  • 补全了main方法的static修饰符,匹配JVM的入口要求
  • 把输入读取逻辑从成员变量定义处移到业务方法内部,避免实例初始化时无预期的阻塞读取
  • 在main方法中先实例化Program类,再调用非静态的业务方法,符合Java的访问规则
  • 补充了缺失的import java.util.Scanner声明(如果你的代码已经提前导入可以省略)
  • 冗余的临时变量cutName被简化,直接修改domainUsername的值即可

内容的提问来源于stack exchange,提问作者Nick Tagliamonte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:45:01