我一直试图创建一个审查单词的程序,但我遇到了困难,所以我尝试回到一些基本代码并测试它,我遇到了一个奇怪的结果。
import java.util.Scanner;
public class TextCensor
{
public static void main(String[] args)
{
String input;
Scanner keyboard = new Scanner(System.in);
input = keyboard.nextLine();
int length = input.length() - 1;
if (length + 1 >= 3)
{
for (int i=0; i<(length - 1); i=i+1 )
{
char first = input.charAt(i);
char second = input.charAt(i+1);
char third = input.charAt(i+2);
String censorCheck = "" + first + second + third;
if (censorCheck == "tag")
{
System.out.println("success");
}
else
{
System.out.println(censorCheck);
}
}
}
else
{
System.out.println(input);
}
}
}
如果我输入字符串&#34; adtag&#34;我将获得以下输出:
adt
dta
tag
然而&#34;成功&#34;尽管我已经打印了一个等于&#34;标签&#34;的censorCheck,但我永远不会打印出来。
答案 0 :(得分:0)
您正在尝试检查String的两个实例是否相同,而不是检查两个字符串的内容。
您应该尝试censorCheck.equals("tag")
。
答案 1 :(得分:0)
要比较JAVA中两个字符串的内容是否相等,您应该使用String configPath = [...]; // Instantiate your configuration path
File file = new File(realPath);
DataSourceProperties dsProp = new DataSourceProperties();
Properties properties = new Properties();
try {
properties.load(new FileInputStream(file));
} catch (IOException e) {
throw new TenantNotConfiguredException(tenant); // Custom exception
}
PropertiesConfigurationFactory<DataSourceProperties> pcf = new PropertiesConfigurationFactory<>(dsProp);
pcf.setTargetName(DataSourceProperties.PREFIX);
pcf.setProperties(properties);
try {
dsProp = pcf.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return DataSourceBuilder.create()
.url(dsProp.getUrl())
.driverClassName(dsProp.getDriverClassName())
.username(dsProp.getUsername())
.password(dsProp.getPassword())
.build();
方法。您无法通过equals()
运算符比较两个字符串的值。在您的情况下,使用==
并查看您是否获得了所需的结果。
答案 2 :(得分:0)
String
是一个对象。您必须按equals()
比较对象:
censorCheck.equalsIgnoreCase(“tag”)
忽略案例也适用于上部字母。
仅对于基元,您可以使用==
进行比较:
3 == 3