Невозможно распечатать вывод как (имя + оценки) - PullRequest
2 голосов
/ 17 января 2020

Я пытаюсь напечатать names + grades, но не могу как-то. Я могу попробовать удалить оценки, тогда имена будут единственными, которые будут напечатаны, но мне нужно, чтобы имена и оценки были напечатаны одновременно (имена + оценки)

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    System.out.print("Input the Number of Students:");

    int totalStudents = Integer.parseInt(in.nextLine());

    String[] studentNames = new String[totalStudents];

    System.out.println("Enter the Student Names:");
    for (int j = 0; j < studentNames.length; j++) {
        studentNames[j] = in.nextLine();
    }
    int[] grades = new int[totalStudents];
    System.out.println("Enter the Student Grades:");
    for (int i = 0; i < studentNames.length; i++) {
        grades[i] = in.nextInt();
    }

    for (String names : studentNames ; int grades : grades) {
        System.out.print(names);
        System.out.println(grades);
    }
}

Ответы [ 2 ]

1 голос
/ 17 января 2020

Если вы можете убедиться, что массив имен учащихся и один из классов имеют одинаковую длину (и вы должны), то вы можете легко выполнить итерацию по индексу

for (int x = 0; x < grades.length; x++) {
    System.out.print(names[x]);
    System.out.println(grades[x]);
}

Тем не менее, так как имена и оценки принадлежат друг другу (оценка ученика a не имеет смысла с именем stundent a), объектно-ориентированный подход будет заключаться в создании класса, который объединяет оба. Поскольку вы, очевидно, только начинаете с java, я настоятельно рекомендую сделать это с самого начала.

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

Прежде всего вместо того, чтобы вызывать studentNames.length и grades.length каждый раз, когда вы можете просто использовать totalStudents, поскольку он представляет оба значения Arrays.

Обратите внимание, что массив gardes должен иметь тип double, а не int.

Затем после заполнения обоих Arrays вы можете использовать:

for (int k=0; k < totalStudents ; k++) {
    System.out.println(names[k] + " : " + grades[k]);
}

Или, возможно, вы можете использовать Map<String, double> для удержания соответственно, names и grades, тогда их будет проще распечатать с помощью:

for (Map.Entry<String, double> entry : yourMap.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}
...