Проблемы с размером массива и длиной - PullRequest
0 голосов
/ 21 октября 2019

Я нахожусь в ситуации, когда я впервые объявил массив без размера. Затем позже укажите размер массива, но в операторе if. В другом операторе if я пытаюсь использовать .length для массива, но он не работает. Для некоторой справочной информации моя программа похожа на школу, и у меня есть учителя, которые являются объектами. У учителей есть курсы (массив), и в первом операторе if определяется количество курсов, которые имеет учитель. В другом заявлении if он попытался удалить все подходящие курсы.

String[] courses;

if (strInput=="y")
{
    System.out.println("Enter number of courses");
    int courseLoop=Integer.parseInt(MyInput.readLine()); //make this the numberfor the loop to continue and number of course codes

    courses = new String [courseLoop];
    for (int y=0;y<=courseLoop;y++)
    {
        System.out.println("Enter course code");
        courses[y]=MyInput.readLine(); //enters the course code in
    }

    for(int i = 0; i < courses.length; i++) //starts checking for course addtion
    {
        if (teacher[x].addCourse(courses[i]))
        {
            System.out.println(courses[i] + " added."); //if course eligable added
        }
        else
        {
            System.out.println(courses[i]+ " cannot be added."); // if ourse uneligable not added
        }
    }
}

if (teacher[x].getName()==strInput) // if the name inputed matched then does the process
{
    for(int i = 0; i<courses.length; i++)
    {
        if(teacher[x].removeCourse(courses[i]))
        {
            System.out.println(courses[i] + " removed.");
        }
        else
        {
             System.out.println(courses[i] + " cannot be removed.");
        }
        correctEntry=true;
    }
}

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Я предполагаю, что strinput Y означает, что вы инициализируете курсы учителя. И когда strinput - это имя учителя, вы хотите обработать курсы учителя, которые были инициализированы ранее.

Когда в операторе if, где имя учителя совпадает с вводом, вы, скорее всего, намеревались использовать курсы учителя, которые были инициализированы ранее.

Для этого вам понадобится что-то вроде курсы = учитель [Икс]. getCourses () в качестве первого утверждения. Тогда переменная курсов будет установлена.

0 голосов
/ 21 октября 2019

Самое простое решение этой конкретной проблемы неинициализированной переменной - всегда инициализировать переменную массива. И проверка логики предполагает, что пустой массив является наиболее подходящим значением.

String[] courses = new String[0];

Это решает проблему «переменная не инициализирована».

Затем, если мы подчиняемся предложению, которое зависитв strInput, равном «y», мы заменим пустой массив на размер, который вам нужен.

Когда мы перейдем к предложению, в зависимости от того, * strInput является именем учителя 'x',courses.length будет равно нулю или количество курсов. В любом случае, он работает правильно, т. Е. Мы не пытаемся разыменовать неинициализированную переменную и не пытаемся получить доступ к неинициализированному или неопределенному элементу массива. Если учитель 'x' не получит имя "y", вы не сможете выполнить оба тела основных операторов if, поскольку первое зависит от строки "y", а второе - от имени учителя.

(Стандартный отступ тоже помог бы)

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