簡體   English   中英

在字符串數組中搜索用戶給定的字符

[英]Search for user-given char in String array

我的項目是一個人事管理程序,有3個arrays(1為姓氏,1為姓名,1為員工地址)。 該程序應該能夠服務於管理的目的,這就是為什么它有幾個功能(添加新員工、按索引 position 等搜索員工等)。 這是我的最后一個方法,它應該能夠通過員工 go 找到包含 xx 的名稱(用戶輸入的字母,因為他沒有正確記住名稱)並打印出地址(地址)姓氏( nN) 和工人的姓名 (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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM