gpt4 book ai didi

java - 如何使 StringTokenizer 正确替换字母?

转载 作者:行者123 更新时间:2023-12-01 17:22:18 24 4
gpt4 key购买 nike

注意:我必须为此程序使用 StringTokenizer(用于作业)

我正在尝试获取此字符串“Java 编程”。说“J@v@~~~Progr@mming”。使用 StringTokenizer。

以下代码有两个问题...

  1. 我的第一个 StringTokenizer 在控制台上显示我需要的内容,但在末尾添加了一个不需要的额外“@”。
  2. 它不会获取我的字符串标记,因为它是“J@v@ Progr@mming”。应用第二个 StringTokenizer ,它将在有空格的地方添加“~~~”。

我缺少什么?我浏览了 Java 的 API 文档,但无法弄清楚。

    import java.util.StringTokenizer;

public class StringToken {

private String token;

//Constructor with default text
public StringToken() {

token = "Java Programming.";
}

//Constructor with custom text
public StringToken(String newToken) {

token = newToken;
}

public String getToken() {
return token;
}

public void setToken(String token) {
this.token = token;
}

public String encodeTokenA(String newToken){

StringTokenizer st = new StringTokenizer(newToken, "a");

while (st.hasMoreTokens()){
String token = st.nextToken();
System.out.format(token + "@");
}

return token;
}

public String encodeTokenB(String newToken){

StringTokenizer st = new StringTokenizer(newToken, " ");

while (st.hasMoreTokens()){
String token = st.nextToken();
System.out.format(token + "~~~");
}
return token;
}
}

public class TestStringToken {

public static void main(String[] args) {

StringToken test = new StringToken();

test.encodeTokenA(test.getToken());

test.encodeTokenB(test.getToken());

System.out.println(test.getToken());


}

}

最佳答案

您的代码中有两个主要缺陷。

首先,如果您仔细观察方法encodeTokenA(),

 while (st.hasMoreTokens()){
String token = st.nextToken();
System.out.format(token + "~~~");
}
return token;

在这里,您在循环内格式化了 block 级字符串“token”,但最终返回实例变量“token”。

其次,在两个函数调用encodeTokenA() 和encodeTokenB() 之间,您期望修改String 对象。 记住字符串在java中是不可变的。

关于java - 如何使 StringTokenizer 正确替换字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com