有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中,如何从字符串数组中查找字符串,以及为什么下面的示例不能按预期工作

如何从字符串数组中查找字符串,在下面的示例中,除了搜索第一个字符串外,我总是搜索失败,但没有搜索第二个或第三个字符串,我甚至尝试了[indexof!=1条件而不是等于],但结果仍然相同,为什么?-请告知。谢谢

我的例子是:

String[] TEXT_ARRAY = {"first","second","third" };
    String parameter ="second";

    for (String string : TEXT_ARRAY) {
    System.out.println("****** [containsScript ? ]  IS EQUALS ?  " + parameter.toString().toUpperCase().equals(string.toString().toUpperCase()));
    }

共 (5) 个答案

  1. # 1 楼答案

    您的脚本按预期工作,正在打印:

    [containsScript?]平等吗?假的

    [containsScript?]平等吗?对

    [containsScript?]平等吗?假的

    但是你有很多冗余代码,你的情况可能会被改写为:

    System.out.println("****** [containsScript ? ]  IS EQUALS ?  " + parameter.equalsIgnoreCase(string));
    

    另外,你到底需要实现什么?如果你想测试一个给定的字符串是否存在于一组字符串中,那么我建议使用一个集合,而不是数组,并在每次需要检查时对其进行迭代

  2. # 2 楼答案

    也许对你有帮助。我编写了这个方法来在字符串数组中搜索用户名

    public static void poisk(String serchingname, String... names) {
    
        for (int i = 0; i < names.length; i++) {
            boolean notfound = false;
            if (serchingname.equals(names[i])) {
                System.out.println("User with name " + serchingname + " is found");
                break;
            }
            while (i==names.length-1) {
                if (serchingname.equals(names[names.length - 1]) == notfound) {
                    System.out.println("User with name  " + serchingname + " is not found");
                    break;
    
  3. # 3 楼答案

    改变制度。出去

    系统。出来println(“**[containsScript?]平等吗?“+(parameter.toString().toUpperCase().equals(string.toString().toUpperCase()))

  4. # 4 楼答案

    你的例子对我很有用。结果将是

    false
    true
    false
    

    注意:我认为这里不需要toString()方法

  5. # 5 楼答案

    字符串实际上是不可变的。如果您有两个具有相同内容的字符串,那么由于String interning,它们将是相同的对象

    所以你应该能够做到:

    parameter.equals(string)

    对于您的搜索,如果这样做更容易,您可以:

    Arrays.asList(TEXT_ARRAY).contains(parameter)

    这和你的循环完全一样