程序没有注意到字符串何时等于特定字符串

时间:2016-05-20 08:42:09

标签: java

我一直试图创建一个审查单词的程序,但我遇到了困难,所以我尝试回到一些基本代码并测试它,我遇到了一个奇怪的结果。

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,但我永远不会打印出来。

3 个答案:

答案 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