好的,所以我需要创建一个程序,根据字符串替换字符串中的单词,并给出替换。 (在这种情况下用英国取代英国)
以下是我的代码,但它不起作用
import java.util.*;
public class replace
{
public static void main(String[]args){
replace("The UK should not be written as uk", "UK", "United Kingdom");
}
static void replace(String input, String seed, String replacement){
String s = "";
ArrayList<String> bla = new ArrayList<String>();
for(int i = 0; i < input.length();i++){
if(input.charAt(i) != ' '){
s = s + input.charAt(i);
}
if(input.charAt(i) == ' ' || i+1 == input.length()){
bla.add(s);
s = "";
}
}
String out = "";
for(int i = 0; i < bla.size(); i++){
if(bla.get(i) == seed){
bla.set(i, replacement);
}
}
for(int i = 0; i < bla.size(); i++){
out = out + bla.get(i)+ " ";
}
System.out.println(out);
}
}
由于某种原因,它没有用替换
替换我的变量 String out = "";
for(int i = 0; i < bla.size(); i++){
if(bla.get(i) == seed){
bla.set(i, replacement);
}
}
为什么会出现这种情况?
提前致谢
答案 0 :(得分:1)
替换:
if(bla.get(i) == seed)
使用:
if(bla.get(i).equals(seed))
第一个比较参考,第二个相等。
您还应该使用StringBuilder
来连接字符串,并将其保留在循环中:
ArrayList<String> bla = new ArrayList<String>();
for(int i = 0; i < input.length(); i++) {
StringBuilder s = new StringBuilder();
if(input.charAt(i) != ' ')
s.append(input.charAt(i));
if(input.charAt(i) == ' ' || i+1 == input.length())
bla.add(s.toString());
}
使用StringBuilder
效率更高。