Использование массива объектов и методов одного класса в другом классе ошибок - JAVA - PullRequest
0 голосов
/ 22 апреля 2020

Я довольно новичок в Java, и я изо всех сил пытаюсь понять несколько понятий. Я пытаюсь создать класс Magazine in Magazine, который требует массива объектов из класса Supplement в своем конструкторе. Я создал метод внутри дополнения, который заполняет массив объектов дополнений, и я пытаюсь вызвать этот метод внутри журнала, чтобы заполнить еще один объект дополнения, который я там создал. Затем я пытаюсь передать этот массив объектов конструктору Magazine, чтобы один журнал мог иметь этот массив из 4 дополнений. Есть смысл? Во-первых, проблема в том, что мой метод fillArray не распознается в журнале из класса Supplement. Все мои классы находятся в одном пакете с исходным кодом, так в чем здесь проблема? Некоторые отзывы о том, где я могу ошибаться с моей логикой c, помогут некоторые указания в правильном направлении, так как я должен применить эту логику c также для некоторых других связанных классов, и я не совсем уверен, как go об этом.

Другой вопрос, который у меня возникает, заключается в том, что после проведения некоторых исследований я вижу, что некоторые люди используют в своих классах publi c stati c void main (String args []) для некоторых операции. Какова цель этого, так как я думал, что он использовался только внутри клиентской программы, и если он используется в классах, что будет использовать клиентская программа?

Журнал. java:

public class Magazine {
    private String magazinename;
    private int WeeklyCost;
    private Supplement[] supplement;

    public static void main(String args[]){

        Supplement[] supplements = new Supplement[3];
        supplements.fillArray();

        Magazine magazineobj = new Magazine("The Wheels Special", 35, supplements);
    };

    public void SetMagazineName(String magazinename1){    
        magazinename = magazinename1;
    };

    public void SetWeeklyCost(int WeeklyCost1){
        WeeklyCost = WeeklyCost1;    
    };

    public String GetMagazineName(){        
        return magazinename;
    };

    public int GetWeeklyCost() {        
        return WeeklyCost;
    };

    public void SetMagazine(String magazinename1, int WeeklyCost1, Supplement[] supplements1){
            magazinename = magazinename1;
            WeeklyCost = WeeklyCost1;
            supplement = supplements1;
    };

    public Magazine(String magazinename1, int WeeklyCost1, Supplement[] supplements1){
        SetMagazine(magazinename1,WeeklyCost1,supplements1);
    };
}

Дополнение. java:

public class Supplement {
    private String supplementname;
    private int WeeklySupCost;

    Supplement[] supplements = new Supplement[3];

    public void fillArray(){ 
        supplements[0] = new Supplement("Sports Illustrated Special", 4);
        supplements[1] = new Supplement("Health and Nutrition", 2);
        supplements[2] = new Supplement("Lifestyled", 5);
        supplements[3] = new Supplement("Gamer's Update", 3);
     }

    public void SetSupplementName(String supplementname1){ 
        supplementname = supplementname1;
    };

    public void WeeklySupCost(int WeeklySupCost1){
        WeeklySupCost = WeeklySupCost1;
    };

    public String GetSupplementName(){
        return supplementname;
    };

    public int GetWeeklyCost(){        
        return WeeklySupCost;
    };

    public void SetSupplement(String supplementname1, int WeeklySupCost1){
        supplementname = supplementname1; 
    };

    public Supplement(String supplementname1, int WeeklySupCost1){
        SetSupplement(supplementname1, WeeklySupCost1);
    }
}

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Ваша проблема в том, что вы пытаетесь вызвать Supplement метод экземпляра fillArray() для Supplement[], а не Supplement.

Вам необходимо вызвать метод fillArray() для каждый элемент массива (а не массива).

Изменение:

supplements.fillArray(); 

на:

for (Supplement supplement : supplements) {
      supplement.fillArray();
}
0 голосов
/ 22 апреля 2020

Измените fillArray, как показано ниже,

 public Supplement[] fillArray(){
        Supplement[] supplements = new Supplement[3];

        supplements[0] = new Supplement("Sports Illustrated Special", 4);
        supplements[1] = new Supplement("Health and Nutrition", 2);
        supplements[2] = new Supplement("Lifestyled", 5);
        supplements[3] = new Supplement("Gamer's Update", 3);
        return supplements;
     }

А затем создайте Supplement объект и вызовите fillArray,

        public static void main(String args[]){

            Supplement supplement = new Supplement();
            Supplement[] supplements = supplement.fillArray();

            Magazine magazineobj = new Magazine("The Wheels Special", 35, supplements);

        };

О главном методе отметьте здесь

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