Java простой рваный запрос массива

Я пытаюсь написать программу на Java, которая будет принимать в качестве входных данных:

  • Количество студентов
  • Количество курсов, принятых каждым студентом

Затем он рассчитает среднее значение для каждого студента.

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

Мой код:

package q3;

import java.util.Scanner;
public class Q3 {

    public static void main(String[] args) {

        int [][] students;
        System.out.println("How many students? : ");
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        students = new int[num][];
        int [] numofcourses = new int[num];

        for(int i = 0;i<num;i++)
        {
            System.out.print("How many courses for student " + (i+1) + " : ");
            numofcourses[i] = in.nextInt();
            for(int j = 0;j<numofcourses[i];j++)
            {
                System.out.print("Enter grade " + (j+1) + " for student " + (i+1) + " : ");         
                students[i][j] = in.nextInt();
            }
        }
    }

}

1 ответ

Решение

В основном ваша проблема с этой линией

students = new int[num][];

а также

students[i][j] = in.nextInt();

этот. потому что в Java-массивах вам нужно инициализировать массив, прежде чем использовать его. но в первой строке вы не указали правильный размер массива, а это означает, что 2D-массив не будет определен правильно. поэтому, как только вы попытаетесь вызвать его, используя второе утверждение, которое я упомянул здесь, оно, очевидно, будет нулевым.

поэтому ваша идея должна представлять динамические значения в виде числа курсов. Но, как и в Java, вы должны определить размер массива, прежде чем использовать его. поэтому в вашем случае ваша идея должна состоять в том, чтобы поместить другой массив в ваш базовый массив (студентов) в качестве курсов, и это будет массив int, а затем вы можете использовать его для вставки курсов.

так лучше идти с

Object[][] data = new Object[numberOfStudents][1];

для цикла

numOFSubjects = nextInt();
int[] no_of_sub = new int[numOFSubjects];

затем

data[i][0] = no_of_sub ;

затем применить оценки для цикла для I и J

data[i][0][j] = nextInt();

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

Другие вопросы по тегам