java - 在字符串数组中搜索用户给定的字符

标签 java search methods contains

我的项目是一个个人管理程序,它有三个数组(1 个为姓氏,1 个为姓名,1 个为员工的地址)。该程序应该能够服务于管理的目的,这就是为什么它有几个功能(添加新员工、按索引位置搜索员工等......)。这是我的最后一个方法,它应该能够遍历员工并找到包含 xx 的姓名(用户输入的字母,因为他没有正确记住姓名)并打印出地址(地址)姓氏( nN)和 worker 的姓名(vN)。

到目前为止,我已经实现了两种方法来实现我的目标,但没有一个能正常工作:

第一:

public static void sucheXL(String[] vN, String[] nN, String[] adres) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Geben Sie den Text ein: ");
        String nn = sc.nextLine();
        boolean gefunden = false;
        for (int i = 0; i < nN.length; i++) {
            if (Arrays.asList(nN).contains(nn)) {
                System.out.println("Dieser Name " + nN[i] + " fängt mit " + nn + " an");
                gefunden = true;
                break;
            }
            if (!gefunden) {
                System.out.println("Es wurden keine Namen gefunden, die diesen Text beinhalten");
                break;
            }
        }
    } 

第二:

public static void sucheL(String[] vN, String[] nN, String[] adres) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Geben Sie den Text ein: ");
        String nn = sc.nextLine();
        boolean gefunden = nN.contains(nn);
        for (int i = 0; i < nN.length; i++) {
            if (gefunden == true) {
                System.out.println("Dieser Name " + nN[i] + " fängt mit " + nn + " an");
                gefunden = true;
                break;
            }
            if (!gefunden) {
                System.out.println("Es wurden keine Namen gefunden, die diesen Text beinhalten");
                break;
            }
        }
    }

最佳答案

您正在检查条目(名称)是否与输入的文本完全相等,这似乎是不受欢迎的......

如果您想查明是否有任何条目以输入的文本开头或包含该文本,您必须查明该名称是否实际上包含来自 System.in 的字符序列。你可以这样做:

public static void sucheXL(String[] nN) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Geben Sie den Text ein: ");
    String nn = sc.nextLine();

    // you may want to close the Scanner...
    sc.close();

    boolean gefunden = false;

    // check for all the entries in nN
    for (int i = 0; i < nN.length; i++) {

        // if the entry starts with the entered String or
        if (nN[i].startsWith(nn)) {
            System.out.println("Der Name " + nN[i] + " beginnt mit " + nn);
            gefunden = true;
            break;
        // if it contains the entered String
        } else if (nN[i].contains(nn)) {
            System.out.println("Der Name " + nN[i] + " enthält " + nn);
            gefunden = true;
            break;
        }
    }

    if (!gefunden) {
        System.err.println("Es wurde kein Name gefunden, der mit dem eingegebenen Text beginnt oder ihn beinhaltet");
    } else {
        System.out.println("Es wurde mindestens ein Name gefunden, der mit dem eingegebenen Text beginnt oder ihn beinhaltet");
    }
}

然后您可以在 main 中使用它,并使用一些示例 String[] ,如下所示:

public static void main(String[] args) {
    String[] names = {"Hans", "Fritz", "Horst", "Rudolf", "Jürgen", "Dietmar", "Jwan"};
    sucheXL(names);
}

输入“or”给出结果

Geben Sie den Text ein: 
or
Der Name Horst enthält or
Es wurde mindestens ein Name gefunden, der mit dem eingegebenen Text beginnt oder ihn beinhaltet

关于java - 在字符串数组中搜索用户给定的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61385355/

相关文章:

java - 如何使用 Jackson 反序列化泛型类?

java - 与 Memoize 一起使用的 Guava 供应商的 Sonarlint 违规行为

c - "pointer->register_next->value"和 C 中的 "pointer->register_next.value"一样吗?

linux - 如何在 Linux 中查找同时包含两个字符串的行?

java - 格式化toString方法

php - 如果值为 true,则为每个项目添加类

java - Spring MVC/Rest 中嵌入的 React 应用程序 : browser GET request routing

java - 如何在 ArrayList 中搜索 StringBuffer 对象?

php - MySQL 获取 LIKE 和多页搜索的起始编号

android - 在另一个 Activity 完成时调用方法