简体   繁体   English

遍历二维数组的第一列后仅打印一次消息

[英]Printing message only once after iterating through the first column of a 2d array

import java.util.Scanner;导入 java.util.Scanner;

public class 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();
    }

//Ask for student code. //索取学生代码。

    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");

            }

        }
    }
}

} }

I need to display only one message after entering the code etudiant but istead it displays the message 4 times.输入代码 etudiant 后,我​​只需要显示一条消息,但它会显示该消息 4 次。 The loop should only iterate through the first column of each line and compares it to what the user entered.循环应该只遍历每一行的第一列,并将其与用户输入的内容进行比较。

Change this:改变这个:

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

to this:对此:

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

as we want to run that loop only once.因为我们只想运行该循环一次。

Alternatively, you can remove the j loop altogether.或者,您可以完全删除 j 循环。

When you iterate for the search you don't need the second loop to iterate over the attributes, because you don't use it当您迭代搜索时,您不需要第二个循环来迭代属性,因为您不使用它

 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

it's recommended you use the length argument for those arrays, that way if you ever change the size, the loop won't break, in this case you can just get the first element of the array, and then iterate through that.建议您对这些数组使用 length 参数,这样如果您更改大小,循环就不会中断,在这种情况下,您只需获取数组的第一个元素,然后遍历它即可。 So 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();
        }

    }

you can say你可以说

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM