Java программа для поиска индекса элемента, введенного пользователем с использованием метода - PullRequest
0 голосов
/ 09 апреля 2020

Как создать Java программу, которая находит индекс любой категории, введенной пользователем.

метод Find() получает массив и возвращает индекс этой указанной c категории. Метод должен искать в массиве и печатать индекс категории, если существует, или «Не найден», если нет.

Я написал этот код, но я не знаю, как методы работают точно. Я продолжаю получать ошибки и Я не знаю, как их исправить.

import java.util.Scanner;
public class Example {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        String[] cat = new String[5];
        cat[0] = "Design";
        cat[1] = "Biology";
        cat[2] = "Business";
        cat[3] = "Health";
        cat[4] = "History";

        System.out.print("Enter Category: ");
        String e = in.nextLine();
        new Example().Find();
        System.out.print("The index of " + cat[i] + " is: " + index);
    }

    public int Find() {
        int index = -1;
        for (int i = 0 ; i < cat.length; i++) {
            if (cat[i].equals(e)) {
                index = i;
                return index;
            }
        }
    }
}

Ответы [ 2 ]

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

Вы были близки. Вот один из способов сделать это с комментариями, объясняющими вещи.

Scanner in = new Scanner(System.in);

// The way you initialzied your array is fine but you 
// could do the same thing like this which most times is easier.

// String[] cat =  { "Design", "Biology", "Business", "Health", "History" };

String[] cat = new String[5];
cat[0] = "Design";
cat[1] = "Biology";
cat[2] = "Business";
cat[3] = "Health";
cat[4] = "History";
System.out.print("Enter Category: ");
String e = in.nextLine();

Вам нужно передать строку категории и массив в метод find. Метод возвращает индекс строки в массиве.

int index = new Example().find(e, cat);

Теперь убедитесь, что индекс действителен. A -1 означает не найден. Любые другие значения должны указывать расположение в массиве.

if (index < 0) {
    System.out.println(e + " not found!");
}
else {

Теперь используйте индекс для вывода значения

    System.out.print("The index of " + cat[index] + " is: " + index);
}

Этот метод был найден, за исключением передачи строки и массива к методу поиска. И возврата i достаточно для index. И, как правило, имена методов начинаются со строчных букв.

public int find(String str, String[] arr) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i].equals(str)) {
           return i;
        }
    }
    return -1;
}
0 голосов
/ 09 апреля 2020

Заметил несколько вещей. Похоже, вам нужно прочитать о области видимости https://www.geeksforgeeks.org/variable-scope-in-java/:

  1. Необходимо найти e, чтобы найти, так как у вас он локальный к основному
  2. Необходимо установите переменную индекса в main.
  3. Индекс, который вы возвращаете, основан на 0, поэтому не уверен, если вы этого хотите. В моем ответе предполагается, что вы этого не сделаете.
  4. Необходимо передать массив cat
import java.util.Scanner;

public class Example {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        String[] cat = new String[5];
        cat[0] = "Design";
        cat[1] = "Biology";
        cat[2] = "Business";
        cat[3] = "Health";
        cat[4] = "History";

        System.out.print("Enter Category: ");
        String e = in.nextLine();
        int index = Find(e);
        System.out.print("The index of " + cat[i] + " is: " + index);
    }

    public int Find(String e, String [] cat) {
        int index = -1;
        for (int i = 0 ; i < cat.length; i++) {
            if (cat[i].equals(e)) {
                return i+1;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...