Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
1

Очень нужен совет!

26.05.2013, 16:20. Показов 2040. Ответов 33
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уже несколько дней сижу со списком произвольного типа, не получается реализовать метод динамической замены размерности списка, уже не знаю что делать!

вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.util.Iterator;
public class Listeseq<E> implements Iterable<E>{
 
    
    private int elementzahl;
        
    private E[] element;
    
    private int max;
    
public Listeseq() {
        this(16);
        
        }
 
    
    @SuppressWarnings("unchecked")
    public Listeseq(int max) {  
        this.max = max;
        this.elementzahl = 0;
        this.element = (E[]) new Object[max+1];
 
public int gibLaenge() {
        return elementzahl;
    }
    
public void fuegeEin(E x, int p) //metod vstavki v spisok
        if (p<1 || p>elementzahl+1) throw new IndexOutOfBoundsException;
        
        
        if (p <= elementzahl){ 
            for (int pos=elementzahl; pos>=p; pos--){//ot bolshego k menshemu - DECREMENT
                element[pos+1] = element[pos];
            }
        }
        element[p] = x;
        elementzahl++;
        
        if(elementzahl==max){
        max=max*2;
         
            element[elementzahl++] = x;
        }
    }
 
public void ersetze(E x, int p){//metod zameni objektov
        if(p<1 || p>elementzahl) throw new IndexOutOfBoundsException;
        
                element[p] = x;
                }
 
public void haengeAn(E x){//metod dobavleniya objekta v konec spiska
                
        if(elementzahl==max){ 
 
        max=max*2;} // ili aendereGroesse(max*2); ???
 
        element[elementzahl+1]=x;
        
            elementzahl++;
            }
        
protected void aendereGroesse( int neueGroesse){//i metod zameni razmernosti u massiva kotoriy u menya ne poluchilsya
          
        
        //esli novaya velichina budet menshe staroi->elementi poteryani
        if(neueGroesse < elementzahl)throw new IllegalArgumentException("Ungueltige Position");
            
        
        Listeseq<E> listeNeu = new Listeseq<E>(neueGroesse);
        
        for(int i=1 ; i<=elementzahl; i++){
            listeNeu.fuegeEin(element[i], i);//pochemu eto ne rabotaet???
            
        }
        
    }
 
}

Вот те самые методы которые используются для управления списком. У меня никак не реализуется метод aendereGroesse. В качестве образцового списка, на котором я проверяю методы взял следующий:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static void main(String [] args){
 
    Listeseq<Integer> Spisok = new Listeseq<Integer>();
    
    Spisok.fuegeEin(4, 1);
    Spisok.fuegeEin(1231,2);
    Spisok.fuegeEin(8, 3);
    Spisok.fuegeEin(5, 4);
    Spisok.fuegeEin(7, 5);
    Spisok.fuegeEin(33,6);
    Spisok.fuegeEin(12,7);
    Spisok.fuegeEin(5552, 8);
    
 
 
    Spisok.aendereGroesse(30);
    
 
    for(int i=1; i<=8 ; i++){//esli predel sdelat do 9, to Exception
        Spisok.haengeAn(i);
    }
    for(Integer num : Spisok){
        System.out.println(num);
    }
    System.out.println("Dlina: "+Spisok.gibLaenge());
    
    
 
}
}
Список заполняется в пределах 16 чисел, далее кидает Exception что не хватает места. Для этого мне и нужно расширить список, чтобы поместились все числа из for. Начиная с 9-го числа, кидает Exception.

Надеюсь я понятно тут все изложил и суть моего вопроса ясна. Очень надеюсь на Вашу помощь и советы по оптимизации кода!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2013, 16:20
Ответы с готовыми решениями:

Очень нужен совет
Вечер добрый пользователи данного форума очень надеюсь на Вашу помощь Есть сайт &quot; Центральное...

1C 7.7. очень нужен совет
Добрый день уважаемые форумчане. Нужна помощь начинающему программисту. Сейчас пишу программу 7.7...

Очень нужен совет
Всем здравствуйте.Не знаю в какую тему написать,но нуждаюсь в совете,подсказке.Может ли человек,с...

Очень нужен совет!!!
Очень нужен совет! Кто знает разъясните пожалуйста, что делать? Яша ориентируется на контент при...

33
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
26.05.2013, 16:37 2
imperson, почему не используемый ArrayList<любой тип>? он сам динамически меняет размер.
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
26.05.2013, 16:38  [ТС] 3
Цитата Сообщение от animator404 Посмотреть сообщение
почему не используемый ArrayList<любой тип>? он сам динамически меняет размер.
в этом и сложность
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
26.05.2013, 16:39 4
даже если ты учишь немецкий, код все-таки желательно писать на английском. Я так считаю.

Добавлено через 37 секунд
Цитата Сообщение от imperson Посмотреть сообщение
в этом и сложность
хочется самому написать?
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
26.05.2013, 16:41  [ТС] 5
Цитата Сообщение от animator404 Посмотреть сообщение
даже если ты учишь немецкий, код все-таки желательно писать на английском. Я так считаю.
ну это все оффтоп конечно, но я специально рядом с методом написал все на русском. Да, пытаюсь сам реализовать.
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
26.05.2013, 16:43 6
Цитата Сообщение от imperson Посмотреть сообщение
пытаюсь сам реализовать
у меня все так же - учусь и хочется во всем разобраться, как работает, что это что то.
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
26.05.2013, 16:50 7
Цитата Сообщение от imperson Посмотреть сообщение
пытаюсь сам реализовать
нашел в API методы типа ensureCapacity, но они к сожалению скрыты
Миниатюры
Очень нужен совет!  
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
26.05.2013, 16:55  [ТС] 8
Цитата Сообщение от animator404 Посмотреть сообщение
нашел в API методы
Я могу использовать только те методы, которые создал сам, поэтому решением вопроса будет только верно составленный алгоритм действий из приведенных в вопросе данных.
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
26.05.2013, 17:06 9
Цитата Сообщение от imperson Посмотреть сообщение
верно составленный алгоритм
я понял. но хотелось как-то подсмотреть или подчитерить))))

Добавлено через 1 минуту
imperson, думаю все-равно нужно узнать какой принцип заложен в API, потому-что это наверняка самый правильный вариант. А если создать свой метод, то не факт, что он будет самым быстрым.
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
26.05.2013, 17:08  [ТС] 10
ладно, посмотрим, спасибо...
0
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
26.05.2013, 22:17 11
сори, но из-за немецкого мой мозг отказывается воспринимать сорцы)

вот описание принципов работы аррей листа: http://habrahabr.ru/post/128269/ олсо хорошо описано во втором томе хортсмана
вот его сорцы http://grepcode.com/file/repos... yList.java
смотреть на метод приведенный аниматором, это именно тот который вам нужен)

Цитата Сообщение от animator404 Посмотреть сообщение
нашел в API методы типа ensureCapacity, но они к сожалению скрыты
оно не скрыто. просто к вашей ИДЕшке не подключены сорцы ждк. из-за этого она показывает апи с телами виде читаемого байткода)
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
27.05.2013, 00:00 12
AckiyBolt, подскажите где скачать.
Подключать отсюда?
Миниатюры
Очень нужен совет!  
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
27.05.2013, 00:27 13
Скачал. Подключил. нормально работает. только почему-то реализация например этого же метода ensureCapacity в API через IDE отличается от той что по ссылке https://www.cyberforum.ru/redi... QuamF2YQ==
Миниатюры
Очень нужен совет!  
0
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
27.05.2013, 00:42 14
imperson, думаю тебе хватит просто посмотреть))))Писать самому не нужно, ну если оооочень хочется...
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
27.05.2013, 01:41  [ТС] 15
да все уже ребят, разобрался, спасибо за активность.

Решение:

Java
1
2
3
4
5
6
7
8
9
10
11
12
protected void aendereGroesse( int neueGroesse){
 
 if(neueGroesse < elementzahl)throw new IllegalArgumentException("Ungueltige Position");
 
  @SuppressWarnings("unchecked")
 E [] ArrayNeu = (E[]) new Object[neueGroesse]; 
 for(int i=1 ; i<=elementzahl; i++){
 ArrayNeu[i] = element[i];//skopirovali
 
 }
 this.element = ArrayNeu;
 }
Добавлено через 4 минуты
Цитата Сообщение от AckiyBolt Посмотреть сообщение
сори, но из-за немецкого мой мозг отказывается воспринимать сорцы)
я ж вроде по-русски специально метод в комментах озаглавил, или мои комменты были всеми жестоко проигнорированы? а переменные наверху, ну я думал всем понятно, что у произвольного списка обычно есть 3 параметра: 1) внутренний массив, 2) кол-во объектов в массиве ну и 3) конечно же max - размерность(capacity) списка. В общем то язык на мой взгляд тут особой роли не играет, хотя возможно я ошибаюсь, не знаю....))

Добавлено через 11 минут
И по поводу ArrayList-a уже писал выше, что сложность заключается в том, чтобы не использовать коллецию включая всевозможные готовые списки и их функционал. Все с нуля, и ни одного импортированного класса. Ну вроде это реально
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.05.2013, 02:00 16
Цитата Сообщение от imperson Посмотреть сообщение
я ж вроде по-русски специально метод в комментах озаглавил, или мои комменты были всеми жестоко проигнорированы?
просто стандарт для кодинга (в германии в том числе) английский язык, не русский и не немецкий, вот вы и вызываете трудности у привыкших людей
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
27.05.2013, 02:02  [ТС] 17
Цитата Сообщение от mutagen Посмотреть сообщение
просто стандарт для кодинга (в германии в том числе) английский язык, не русский и не немецкий, вот вы и вызываете трудности у привыкших людей
ну вообще-то это задание немецкого ВУЗа и как видите кодинг совсем уж не анлийский
ладно, учту на будущее, просто реально переводить времени не было, думал люди в теме дойдут сами, хотя чужой метод как чужой сундук с барахлом, надо вникать конечно
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.05.2013, 02:05 18
Цитата Сообщение от imperson Посмотреть сообщение
ну вообще-то это задание немецкого ВУЗа и как видите кодинг совсем уж не анлийский
что там чудят в вузе я не знаю, но 100% уверен, что в немецких фирмах кодят на английском, так как у меня там работают знакомые
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
27.05.2013, 02:09  [ТС] 19
Цитата Сообщение от mutagen Посмотреть сообщение
что там чудят в вузе я не знаю, но 100% уверен, что в немецких фирмах кодят на английском, так как у меня там работают знакомые
ну до фирм я еще не добрался, так что располагаю только тем что дают тоже самое что если б например в российских гос. вузах задания раздавали на анлийском языке ну ествественно английский в фирмах, международный ведь язык как никак...
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.05.2013, 02:13 20
Цитата Сообщение от imperson Посмотреть сообщение
в российских гос. вузах задания раздавали на анлийском языке
так у вас задания на немецком, но код вас никто не заставляет писать на немецком, так?
в российских тоже так, задания на русском - код на английском (если конечно препод не самодур)

ps: кстати как там учат? судя по тому что у вас тут вопросы, не очень успешно?
0
27.05.2013, 02:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2013, 02:13
Помогаю со студенческими работами здесь

Очень нужен ваш совет!
Всем привет, я очень хочу стать веб разработчиком, для этого я решил пройти курсы, курсы эти...

Очень нужен совет в выборе
Здравствуйте. Вот собственно и намеченный аппарат: Кулер Scythe Ninja 3 Rev.B (SCNJ-3100) (1 750...

Помогите,очень нужен совет
Допустим у меня есть программа,по нажатию кнопки я хочу что бы открывался текстовый документ в...

Очень нужен ваш совет
Всем доброго времени суток! В общем суть проблемы такая: дали задание(курсач) по excel vba ...

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

Друзья! очень нужен совет!)
Ребят) в общем верстаю и натягиваю один макетик на worpdress. встал вопрос с тем, как реализовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru