Поиск заданного пользователем символа в массиве String - PullRequest
0 голосов
/ 23 апреля 2020

Мой проект - это программа персонального управления, которая имеет три массива (1 для фамилии, 1 для имени и 1 для адреса сотрудника). Программа должна быть в состоянии служить цели управления, поэтому она имеет несколько функций (добавление новых сотрудников, поиск сотрудников по позиции индекса и т. Д.). Это мой последний метод, который должен быть в состоянии go через сотрудников и найти имя, которое содержит хх (буквы, введенные пользователем, поскольку он не помнит имя должным образом) и распечатать адрес (адрес) фамилия (nN) и имя (vN) работника.

До сих пор я реализовал два метода для достижения своей цели, ни один из них не работал должным образом:

1-й:

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;
            }
        }
    } 

2-й:

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;
            }
        }
    }

1 Ответ

0 голосов
/ 23 апреля 2020

Вы проверяете записи (имена) на полное равенство введенному тексту, что кажется нежелательным ...

Если вы хотите узнать, начинается ли какая-либо запись с введенного текста или содержит его, вам нужно выяснить, действительно ли имя содержит последовательность символов из 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
...