如何在列表中搜索字符串的一部分并打印出整个字符串?

时间:2015-09-29 11:39:25

标签: java eclipse

我制作了一个代码,它使用一个输入并将其存储在一个基因列表中然后我使用另一个输入来将它与第一个输入进行比较...如果第一个输入是" Eric 1991"而第二个输入只是" Eric"所以我想打印出这样的所有序列" Erik 1991" ..我使用不同的方式在namebirthday列表中搜索,我用于循环然后我使用包含但他们看起来不工作,现在我使用toLowerCase().contains(x.toLowerCase() 我在toLowerCase().contains(x.toLowerCase()的日食中遇到错误 如何更正该行以运行代码???

package shapes;

import java.util.ArrayList;
import java.util.Scanner;

public class Base {


public static void main(String [] args) {
    ArrayList<String> namebirthday = new ArrayList<String>();
    Scanner sn = new Scanner(System.in);
    String n=sn.nextLine();
//  String k=sn.nextLine();
//  String m=sn.nextLine();

    namebirthday.add(n);
//  namebirthday.add(k);
//  namebirthday.add(m);
    Scanner sb = new Scanner(System.in);
    String x=sb.nextLine();
        if (namebirthday.toLowerCase().contains(x.toLowerCase())){ // The method toLowerCase() is undefined for the type ArrayList<String>

            System.out.println(namebirthday);

        } else {
            System.out.println("x" +"is not found" );

        }
    }


        }

Acually我试图放if (((String) namebirthday).toLowerCase().contains(x.toLowerCase())){但是eclipse说&#34;无法从ArrayList转换为String-方法toLowerCase()未定义类型ArrayList&#34;

怎么办??? 感谢

6 个答案:

答案 0 :(得分:0)

  

无法从ArrayList转换为String-方法toLowerCase()是   未定义类型ArrayList

if (namebirthday.contains(x.toLowerCase())){ 
            System.out.println(x);

        } else {
            System.out.println("x" +"is not found" );

        }
}

答案 1 :(得分:0)

您必须使用foreach来获取元素,以便进行比较 如果您使用namebirthday.contains,那么输入工作就不会像"Eric"那样。

请参阅以下代码:

for(String currentString : namebirthday){
    if (currentString.toLowerCase().contains(x.toLowerCase())){ 
        System.out.println(currentString );
    } else {
        System.out.println("x" +"is not found" );
    }
}

答案 2 :(得分:0)

您无法在列表中使用toLowerCase()。你必须自己实现contains方法。

private static boolean containsIgnoreCase(List<String> nameBrithday, String s) {
    for (String s1 : nameBrithday){
        if ( s1.toLowerCase().contains(s.toLowerCase())){
            return true;
        }
    }
    return false;

}

答案 3 :(得分:0)

你不能在数组上调用toLowerCase(),你必须在数组的每个成员上调用它:

boolean found = false;
for(String nm : namebirthday) {
    if (nm.toLowerCase().contains(x.toLowerCase())) {
        System.out.println(nm);
        found = true;
        // Add a break; here if you only care about the first match
    }
}
if(!found) System.out.println("x" +"is not found" );

答案 4 :(得分:0)

namebirthdayList个实例,而不是String个实例。如果要检查此列表内容的某些内容,则需要获取一个String元素。我发布了两个如何做到的例子(第一个可能对你更有用):

检查列表是否包含元素

if (namebirthday.contains("Erik 1991")) {
    // Do something
}

迭代整个列表并对每个元素进行检查

for (String element : namebirthday) {
    if (element.equals("Erik 1991")) {
        // Do something
    }
}

答案 5 :(得分:0)

这是固定代码

package shapes;

import java.util.ArrayList;
import java.util.Scanner;

public class Base {


public static void main(String [] args) {
    ArrayList<String> namebirthday = new ArrayList<String>();
    Scanner sn = new Scanner(System.in);
    String n=sn.nextLine();
//  String k=sn.nextLine();
//  String m=sn.nextLine();

    namebirthday.add(n);
//  namebirthday.add(k);
//  namebirthday.add(m);
    Scanner sb = new Scanner(System.in);
    String x=sb.nextLine();
    for (String str : namebirthday){
        if (str.toLowerCase().contains(x.toLowerCase())){
            System.out.println(str);

        } else {
            System.out.println("x" +"is not found" );

        }
      }
     }
    }