java的replaceAll方法对我不起作用我做错了什么?
我运行了代码,但它没有用string2替换string1
我试着梳理扫描仪,但没用。我试图单独关闭扫描仪,但结果当然是语法错误
import java.util.*;
public class Remove_and_Replace {
public static void main(String []args) {
Scanner a = new Scanner(System.in);
System.out.println("Enter your first word:");
String String1 = a.nextLine();
Scanner b = new Scanner(System.in);
System.out.println("Enter your second word:");
String String2 = b.nextLine();
Scanner c = new Scanner(System.in);
System.out.println("Enter your sentence:");
String String3 = c.nextLine();
c.close();
String replaceString=String3.replaceAll("String1","String2");
System.out.println(replaceString);
}
}
预期结果:
Enter your first word:
bad
Enter your second word:
good
Enter your sentence:
I am always bad.
I am always good.
实际结果:
Enter your first word:
bad
Enter your second word:
good
Enter your sentence:
I am always bad.
I am always bad.
# 1 楼答案
您需要从方法中删除引号。结果是它正在寻找一个单词“String1”,如果它找到了所说的单词,它将用单词“String2”替换它。删除引号会使它查找对象的引用,而不是实际的变量名
这个:
String replaceString=String3.replaceAll("String1", "String2");
应该变成这样:
String replaceString=String3.replaceAll(String1,String2);
# 2 楼答案
这一行:
应替换为:
在第一行中,您试图替换值“String1”本身,而不是使用对象
# 3 楼答案
删除双引号:
解释:
使用原始行,您将用单词String2替换字面上的单词String1。如果没有双引号,则将存储在
String1
变量(bad)中的单词替换为存储在String2
变量(good)中的单词。另一方面,Java命名约定指定变量以小写字母开头,大写字母用于类# 4 楼答案
像这样改变并打印替换字符串,你会得到答案
# 5 楼答案
为什么在引号中使用String1和String2
替换这个:
有了这个:
顺便说一句,根据命名惯例,变量的命名总是以小写字母开头。所以它应该看起来像:
你可以在这里阅读更多内容:https://www.javatpoint.com/java-naming-conventions