Как я могу получить многомерный массив для цикла с вводом строки? - PullRequest
1 голос
/ 03 июля 2019

В основном я делаю программу, которая читает из многомерного массива для отображения соответствующей информации. Я хочу сделать так, чтобы цикл while продолжал сообщать мне, что я ввожу неправильные идентификаторы классов, пока вы не введете правильный идентификатор класса.

делать {

    System.out.println("Please enter the name of your course to display it's information");
    name = input.nextLine();

    for(int x = 0; x <= classes.length; ++x)
    {

        if(name.equals(classes[x][0]))
        {

            i = true;

            System.out.println("Course info: " + classes [x][0]);
            System.out.println(classes[x][1]);
            System.out.println(classes[x][2]);
            x = classes.length;


        }

        else{

            System.out.println("Wrong course id");
            i = false;
            input.next();

            }   
    }
    }

    while (!(i));
    System.out.println("This is the end of the program!");
    System.exit(0);

1 Ответ

0 голосов
/ 03 июля 2019

Прежде всего, постарайтесь соблюдать правила именования. i - недопустимое имя для переменной флага. Назовите это boolean found или что-то еще. Это не только поможет другим людям читать и понимать ваш код, но и поможет вам найти логику, которую вы должны использовать.

Теперь, так как у вас есть input.next(); в else части, я думаю, вы хотите снова запросить ввод данных пользователем, пока что-то не будет найдено. Таким образом, name = input.nextLine(); требуется снова, чтобы принять новый ввод. Но в вашем случае else часть может быть полностью удалена, и пусть do-while сделает всю работу.

Пример:

public class Classes {
    private static final String[][] CLASSES = { { "Maths", "info" }, { "History", "info" }, { "Biology", "info" } };

    public static void main(String[] args) {
        boolean found = false;
        String name;
        Scanner input = new Scanner(System.in);
        do {
            System.out.println("Please enter the name of your course to display it's information");
            name = input.nextLine();
            for (int i = 0; i < CLASSES.length; i++) {
                if (name.equals(CLASSES[i][0])) {
                    found = true;
                    System.out.println("Course info: " + CLASSES[i][0]);
                    System.out.println(CLASSES[i][1]);
//                  System.out.println(CLASSES[i][2]); //My CLASSES array, does not have 3 columns
                    break;// exit for loop
                }
            }
            if (!found)
                System.out.println("Wrong course id");
        } while (!found);
        input.close();
        System.out.println("This is the end of the program!");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...