Есть класс содержащий массив и методы работы с ним, как задать его размер с клавиатуры? Java

149
08 февраля 2018, 16:41
public class DynamicArray {
public static String[] array = new String[3];
public int size = 0;

public String get(int i) {
    return array[i];
}
public void add(String s) {
    if(array.length <= size) {
        String[] temp = array;
        array = new String[size+1];
        for(int i = 0; i < temp.length; i++) {
            array[i] = temp[i];
        }
    }
    array[size] = s;
    size++;
}
public void remove(int i) {
    for (int k = i; k < size - 1; k++)
        array[k] = array[k + 1];
    size--;
}
public int size() {
    return size;
}
public void state() {
    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i] + " ");
    }
}
public static void main(String[] args) {
    DynamicArray array = new DynamicArray();
    boolean exit = true;
    Scanner sc = new Scanner(System.in);
    do {
        System.out.println("Choose an option:");
        System.out.println("1. Add element");
        System.out.println("2. Remove element");
        System.out.println("3. Show array size");
        System.out.println("4. Show array");
        System.out.println("5. Show element in array");
        int option = sc.nextInt();
        switch(option) {
            case 1:
                System.out.println("Enter element to add");
                array.add(sc.next());
                System.out.println("Now array looks like: ");
                array.state();
                break;
            case 2:
                System.out.println("Choose element index to remove");
                array.remove(sc.nextInt());
                System.out.println("Now array look like: ");
                array.state();
                break;
            case 3:
                System.out.println("Array size is" + array.size());
                break;
            case 4:
                System.out.println("Now array looks like: ");
                array.state();
                break;
            case 6:
                System.out.println("Enter the index of array");
                array.get(sc.nextInt());
                break;
            default:
                System.out.println("Unknown operation");
                break;
        }
        System.out.println("Enter 1 to continue, 0 to exit the application");
        option = sc.nextInt();
        if (option == 0) exit = false;
    } while(exit);
}

}

Answer 1

Создайте конструктор, принимающий на вход размер массива:

public class DynamicArray {
    public String[] array; //массив array не должная быть static - иначе он будет общий для всех экземпляров DynamicArray 
    public int size = 0;
    public DynamicArray(int length) {
        array = new String[length];
    }
    ...
}

Проинициализируйте до начала использования:

...
Scanner sc = new Scanner(System.in);
System.out.println("Enter array's size");
DynamicArray array = new DynamicArray(sc.nextInt());
System.out.println("Now array looks like: ");
array.state();
do {
...

PS: закрывайте ресурсы - вызывайте sc.close(); после завершения работы или используйте конструкцию try-with-resources:

try (Scanner sc = new Scanner(System.in)) {
...
READ ALSO
Ошибка cannot find symbol BorderLayout

Ошибка cannot find symbol BorderLayout

Пытаюсь запустить пример использования KeyListener, но компилятор выдает ошибку

184
Работа с odt из java

Работа с odt из java

Есть файл odtКак в него добавить какие нибудь метки, и потом на место этих меток подставлять значения из кода? Используется ODF Toolkit

148
Выравнивание заголовка в Activity

Выравнивание заголовка в Activity

В Activity используется метод setTitle() для установки заголовкаНо заголовок устанавливается прижатый к левому краю

162
Как отключить автовоспроизведение в Selenium chromedriver?

Как отключить автовоспроизведение в Selenium chromedriver?

Использую chromedriver для тестирования, и необходимо отключить автовоспроизведение всех видеоКакие есть варианты это решить?

178