Java |доступ к объектным переменным из конструктора? - PullRequest
0 голосов
/ 21 февраля 2019

Я обычно не использую Java, и в настоящее время я пытаюсь помочь другу с назначением Java, и это застревает у меня

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

public class ADTbag {
   String item = "Testing";


   public ADTbag(int size) {
      // This constructor has one parameter, name.
      String[] bag = new String[size];

      bag[0] = Integer.toString(size);
      System.out.println("A bag was created with the size of " + size + " | " + bag[0]);
   }

   public void insert() {
      /* Insert an item */
      /* One Problem this public void doesn't have access to the bag var"
      System.out.println(bag);

   }

Я чувствую, что это простая концепция в Java, но я не могу найти ничего на моих Google, что мне помогло.Я хочу иметь возможность вставить что-то в объект bag или string array с помощью метода insert.Так что-то вроде этого.

public static void main(String []args) {
      /* Object creation */
      ADTbag myBag = new ADTbag(5);

      String value = "Some Value";
      /* I want to do this */
      mybag.insert(value);


   }
}

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Прежде всего, вы должны сделать поле сумки чем-то глобальным.После этого мы можем создать функцию для вставки / добавления нового элемента в ваши сумки.Тогда нет необходимости работать с конструктором, как вы пытаетесь это сделать.

Другое дело, когда вы говорите о вставке и / или добавлении itens в «список», достаточно использовать ArrayListвместо этого стандартный array.

ArrayList - это структура данных / сбора, которая позволяет добавлять, удалять, устанавливать, получать (и некоторые другие операции) во время выполнения над тем же объектом.Если мы хотим вставить новый элемент в массив, мы не можем;для этого нам нужно создать еще один массив с размером + 1 и после установить все элементы нового массива.Тогда это так запутанно для простой операции.

Думая об этом, я дам вам подход, который использует это, взгляните:

import java.util.ArrayList;

public class ADTbag {
    /*
    global field to be referenced through entire class.
    We have to specify the type of objects that will be inserted
    inside this list, in this case String
     */
    ArrayList<String> bag;

    String item = "Testing";

    //constructor doesn't need parameter
    public ADTbag() {
        //here we init the bag list
        bag = new ArrayList();

        //adds your "standard item" on creating
        bag.add(item);



      /*
        prints your msg.

        - to get the size of a ArrayList just call list.size();
        - to get the item from the X index just call list.get(X)
         */
        System.out.println("A bag was created with the size of " + bag.size() + " | " + bag.get(0));
    }

    /*
    you doesn't need a new method
     */
}

Чтобы использовать, сделайте это:

public static void main(String[] args) {
    ADTbag myBag = new ADTbag();
    myBag.bag.add("some value");
}
0 голосов
/ 21 февраля 2019

Вам нужно сделать bag членом класса, чтобы он был доступен вне конструктора.

0 голосов
/ 21 февраля 2019

Определить переменную как переменные экземпляра

public class ADTbag {
       String item = "Testing";
       String[] bag;

       public ADTbag(int size) {
          // This constructor has one parameter, name.
         this.bag = new String[size];

          bag[0] = Integer.toString(size);
          System.okaut.println("A bag was created with the size of " + size + " | " + bag[0]);
       }

       public void insert() {
          /* Insert an item */
          /* One Problem this public void doesn't have access to the bag var"
          System.out.println(bag);*/

       }
}

Как будет выглядеть выше.

0 голосов
/ 21 февраля 2019

Вы можете объявить bag в классе за пределами методов, а затем назначить ему новую String в конструкторе.

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