Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2014, 16:29   #1
pavlik_ivasuk
Новичок
Джуниор
 
Регистрация: 21.08.2014
Сообщений: 2
По умолчанию Задачка на Java

Парни препод задал задачку: Написать для динамического массива метод insert()
Код:
public class DynamicString 
{
    public DynamicString() 
    {
        this.characters = new char[16];
        this.characterCount = 0;
    }
    public DynamicString insert(int offset, char ch)
    {
        
    }
}
А дальше не знаю как. Завтра нужно сдать чтобы зачет поставил до начала нового семестра.
Чтобы выводило в консоли : Например abc insert(0, d) = dabc

Подскажите как менять местами значения? - а - d

Последний раз редактировалось pavlik_ivasuk; 21.08.2014 в 17:04.
pavlik_ivasuk вне форума Ответить с цитированием
Старый 22.08.2014, 10:23   #2
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Не совсем понятно, что вы хотите сделать. Если вам нужно добавить новый элемент в массив в произвольное место, то вам нужно создать новый массив заполнив его учитывая положения нового элемента (т.е. сместить старые элементы относительно положения нового), а не "поменять местами".
Код:
package com.company;

import java.util.Arrays;

public class Main {
    private char[] chars = {'a', 'b', 'c'};
    public static void main(String[] args) {
        Main m = new Main();
        char[] chs = m.insert(1,'s');
        System.out.println(Arrays.toString(chs));
    }

    public char[] insert (int offset, char ch) {
        try {
            char[] chs = new char[chars.length + 1];
            int i = 0;
            for (; i < offset; i++) {
                chs[i] = chars[i];
            }
            chs[i] = ch;
            for (; i < chars.length; i++) {
                chs[i+1] = chars[i];
            }
            return chs;
        }
        catch (IndexOutOfBoundsException e) {
            System.out.println("offset > array.lenght: " + offset + " > " + chars.length);
        }
        return null;
    }
}
ultimatet41 вне форума Ответить с цитированием
Старый 22.08.2014, 20:10   #3
pavlik_ivasuk
Новичок
Джуниор
 
Регистрация: 21.08.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от ultimatet41 Посмотреть сообщение
Не совсем понятно, что вы хотите сделать. Если вам нужно добавить новый элемент в массив в произвольное место, то вам нужно создать новый массив заполнив его учитывая положения нового элемента (т.е. сместить старые элементы относительно положения нового), а не "поменять местами".
Код:
package com.company;

import java.util.Arrays;

public class Main {
    private char[] chars = {'a', 'b', 'c'};
    public static void main(String[] args) {
        Main m = new Main();
        char[] chs = m.insert(1,'s');
        System.out.println(Arrays.toString(chs));
    }

    public char[] insert (int offset, char ch) {
        try {
            char[] chs = new char[chars.length + 1];
            int i = 0;
            for (; i < offset; i++) {
                chs[i] = chars[i];
            }
            chs[i] = ch;
            for (; i < chars.length; i++) {
                chs[i+1] = chars[i];
            }
            return chs;
        }
        catch (IndexOutOfBoundsException e) {
            System.out.println("offset > array.lenght: " + offset + " > " + chars.length);
        }
        return null;
    }
}
нет , мне нужно в указанный индекс записать другой массив и сместить старые элементы относительно положения нового
pavlik_ivasuk вне форума Ответить с цитированием
Старый 22.08.2014, 20:11   #4
pashkevych
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 31
По умолчанию

Ось задачка на вчера, целый масив записывать я еще не знаю как)
Код:
package fixedstringapp;
 
public class DynamicString 
{
    private int newCharacter;
    public DynamicString() 
    {
        this.characters = new char[16];
        this.characterCount = 0;
    }
    
    public void ensureCapacity(int minimumCapacity)
    {
        if (minimumCapacity > this.capacity())
        {
            char[] newCharacters = new char[minimumCapacity];
            for (int index = 0; index < this.length(); ++index)
            {
                newCharacters[index] = this.characters[index];
            }
            this.characters = newCharacters;
        }
    }
 public DynamicString insert(int offset, char ch)
    {
        this.ensureCapacity(this.characterCount + 1);
        this.copyBackward(this.characters, offset, this.characters, offset + 1, this.characterCount - offset);
        this.characters[offset] = ch;
        ++this.characterCount;
 
        return this;
    }
    private void copyForward(char[] source, int sourceIndex, char[] target, int targetIndex, int elementCount)
    {
         for (; elementCount > 0;)
         {
             target[targetIndex] = source[sourceIndex];
             ++targetIndex;
             ++sourceIndex;
             --elementCount;
         }
    }
    private void copyBackward(char[] source, int sourceIndex, char[] target, int targetIndex, int elementCount)
    {
         for (; elementCount > 0;)
         {
             target[targetIndex + elementCount - 1] = source[sourceIndex + elementCount - 1];
             --elementCount;
         }
    }
    public void print() 
    {
        for (int index = 0; index < this.characterCount; ++index) 
            System.out.print(this.characters[index]);
        System.out.println();
    }
        DynamicString str = new DynamicString();
        str18.insert(0, 'B'); 
        str18.insert(0, 'A');
        str18.insert(2, 'C');
        str18.print();
    
    
    private char[] characters;
    private int characterCount;
}
А дествительно, как заменять целым масивом?
pashkevych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть два кода на Java MЕ и Java SE(нетбинс и эклипс)помогите пожалуйста их переделать на Си#и Си++(Визуал и QT) jula939393 Помощь студентам 10 28.01.2014 07:08
Строки Java задачка asselka Общие вопросы по Java, Java SE, Kotlin 17 05.11.2009 01:42
Помогите справиться с java.lang.OutOfMemoryError: Java heap space Levilaulada Помощь студентам 1 17.05.2009 10:59