Печать сообщения только один раз после итерации по первому столбцу двумерного массива - PullRequest
0 голосов
/ 27 января 2020

import java .util.Scanner;

publi c Класс Grade {

public static void main(String[] args) {

    String students[][] = new String[2][4];

    Scanner input = new Scanner(System.in);

    for (int i = 0; i < 2; i++) {

        System.out.print("\n\nStudent 00" + (i + 1) + "\n\n");

        for (int j = 0; j < 4; j++) {

            if (j == 0) {
                System.out.print("\n\tStudent Code : ");
            } else if (j == 1) {
                System.out.print("\n\tName : ");
            } else if (j == 2) {
                System.out.print("\n\tMaths Grade : ");
            } else if (j == 3) {
                System.out.print("\n\tFrench Grade : ");
            } else {
                System.out.print("\n\tNonexistent field!\n");
            }

            students[i][j] = input.nextLine();
        }

    }

    System.out.print("\n\tRegistered Students : \n\n");

    System.out.print("\tCODE\tFULL NAME\tMATHS\tFRENCH\n\n");

    for (int i = 0; i < 2; i++) {

        for (int j = 0; j < 4; j++) {

            System.out.print("\t" + students[i][j] + "  ");

        }

        System.out.println();
    }

// Запросите код студента.

    System.out.print("\n\tStudent Code : ");

    String search= input.nextLine();

    boolean found = false;

    for (int i = 0; i < 2; i++) {

        for (int j = 0; j < 4; j++) {

// found = true;

            if (search.equals(students[i][0])) {

                found = true;

                System.out.print("\n\tStudent Code Found!\n");

                String math = students[i][2];
                String french = students[i][3];

                Double m = new Double(math);
                double mathConv = m.doubleValue();

                Double f = new Double(french);
                double frenchConv = f.doubleValue();

                double average = (mathConv + frenchConv) / 2;

                System.out.print("\n\tMoyenne de l'etudiant : " + average + "\n");

                if (average <= 40) {

                    System.out.print("\n\tFailure!\n");

                } else if (average > 40 && average < 70) {

                    System.out.print("\n\tReprisal!\n");

                } else {

                    System.out.print("\n\tSuccess!\n");
                }

            }

            else if (!search.equals(students[i][0])) {

                found = false;

                System.out.print("\n\tCode incorrect!\n");

            }

        }
    }
}

}

Мне нужно отобразить только одно сообщение после ввода кода etudiant, но вместо этого оно отображает сообщение 4 раза. L oop должен выполнять итерацию только по первому столбцу каждой строки и сравнивать его с тем, что ввел пользователь.

Ответы [ 3 ]

0 голосов
/ 27 января 2020

Когда вы выполняете итерацию для поиска, вам не нужен второй l oop для итерации по атрибутам, потому что вы не используете его

 System.out.print("\n\tStudent Code : ");
 String search = input.nextLine();
 boolean found = false;

 for (int i = 0; i < 2; i++) {
//        for (int j = 0; j < 4; j++) { //you don't need this loop
0 голосов
/ 13 февраля 2020

рекомендуется использовать аргумент длины для этих массивов, так что если вы когда-либо измените размер, l oop не сломается, в этом случае вы можете просто получить первый элемент массива, а затем выполнить итерацию через это. Так что intead of

for (int i = 0; i < 2; i++) {

        System.out.print("\n\nStudent 00" + (i + 1) + "\n\n");

        for (int j = 0; j < 4; j++) {

            if (j == 0) {
                System.out.print("\n\tStudent Code : ");
            } else if (j == 1) {
                System.out.print("\n\tName : ");
            } else if (j == 2) {
                System.out.print("\n\tMaths Grade : ");
            } else if (j == 3) {
                System.out.print("\n\tFrench Grade : ");
            } else {
                System.out.print("\n\tNonexistent field!\n");
            }

            students[i][j] = input.nextLine();
        }

    }

можно сказать

        System.out.print("\n\nStudent 001" + "\n\n");

        for (int j = 0; j < students[0].length; j++) {

            if (j == 0) {
                System.out.print("\n\tStudent Code : ");
            } else if (j == 1) {
                System.out.print("\n\tName : ");
            } else if (j == 2) {
                System.out.print("\n\tMaths Grade : ");
            } else if (j == 3) {
                System.out.print("\n\tFrench Grade : ");
            } else {
                System.out.print("\n\tNonexistent field!\n");
            }

            students[0][j] = input.nextLine();
        }
0 голосов
/ 27 января 2020

Измените это:

for (int j = 0; j < 4; j++)

на это:

for (int j = 0; j < 1; j++)

, поскольку мы хотим запустить l oop только один раз.

В качестве альтернативы, вы можете удалить JL oop в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...