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

如何从带参构造器获取数据?Java代码实现咨询

Hey,我来帮你搞定这段代码的修改问题!你的核心需求是把字符串拆分的逻辑从split换成调用自定义的StringTokenizer(String str)构造器,同时修复print方法里的调用错误对吧?下面一步步来改:

1. 先修改arr方法,替换成自定义构造器获取数据

首先,你的StringTokenizer带参构造器会通过成员变量data提供String[]类型的拆分结果,那我们只需要在arr方法里实例化这个类,然后取出它的data变量就行:

public String[] arr(String str){
    // 实例化自定义的StringTokenizer,传入要拆分的字符串
    StringTokenizer tokenizer = new StringTokenizer(str);
    // 从构造器初始化的实例中获取拆分后的数组data
    String[] tokens = tokenizer.data;
    return tokens;
}

注意:这里默认你的StringTokenizer类把拆分结果存在了公共的成员变量data里,如果是私有变量,记得给它加个getter方法比如getTokens()来获取数据哦!

2. 修复print方法的调用错误

原来的print方法里arr()是无参调用,但你的arr方法需要传入一个String参数,这里有两种常见的解决方式:

方案A:给print方法加参数,直接传入要处理的字符串

这种方式最直接,适合每次打印不同字符串的场景:

public void print(String str){
    // 把要处理的字符串传给arr方法,拿到拆分后的tokens
    String[] tokens = arr(str);
    int size = tokens.length;
    for(int i=0;i<size;i++){
        System.out.print(tokens[i]);
    }
}

方案B:用类的成员变量存储字符串,实现无参调用

如果你的类是用来处理固定字符串的,可以先把字符串存在成员变量里,这样arr和print都可以改成无参:

// 先在类里加一个成员变量存储要处理的字符串
private String targetStr;

// 给你的类加个构造器,初始化这个字符串
public YourClassName(String str){
    this.targetStr = str;
}

// 修改arr方法为无参,直接用成员变量
public String[] arr(){
    StringTokenizer tokenizer = new StringTokenizer(targetStr);
    return tokenizer.data;
}

// 现在print方法就可以无参调用arr了
public void print(){
    String[] tokens = arr();
    int size = tokens.length;
    for(int i=0;i<size;i++){
        System.out.print(tokens[i]);
    }
}
小提醒:避免和JDK自带类混淆

Java本身有个java.util.StringTokenizer类,功能和你的自定义类类似但用法不同,为了避免混淆,建议把你的自定义类改个名字,比如MyStringTokenizer,这样代码可读性会更高哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:07:16