Forum zamknięte. Zapraszamy do grupy na Facebooku
Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Dynamiczne zwiekszanie tablicy.
08-07-2014, 09:18 PM
Post: #1
Dynamiczne zwiekszanie tablicy.
Witam!

Jest to moj pierwszy post dlatego na poczatku chciałbym się przywitać ze wszystkimi przywitać! Mam pewien problem, mianowicie chcialbym aby stworzona przez mnie tablica powiekrzala swoj rozmiar o jeden przy dodawaniu kolejnego elementu. Wiem ze trzeba kopiować elementy do nowej większej tablicy tylko jak to zrobić aby zwiększała się za kazdym dodaniem a nie tylko raz. Czy da się to zrobić bez użycia klasy Array?

Z gory bardzo dziękuje za odpowiedź!
Pozdrawiam
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-07-2014, 09:25 PM
Post: #2
RE: Dynamiczne zwiekszanie tablicy.
Witam,
Możesz spróbować podczas tworzenia tablicy jako wielkość podać wielkość starej tablicy +1.
A dlaczego nie chcesz używać klasy Array?

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-08-2014, 08:05 AM
Post: #3
RE: Dynamiczne zwiekszanie tablicy.
Próbowałem tak wtedy tablica faktycznie jest większa o jeden i po dodaniu kolejnego elementu program kończy działanie, a wygląda mniej więcej tak:
int[] tablica = new int[1]
int[] nowaTablica = new int[tablica.length+1]
for (int i = 0; i<tablica.length; i++){
tablica = nowaTablica;
itd....
}

To nie tak, że nie chcę używać klasy Array. Po prostu myślałem, że jest może inna możliwość. Ja jestem bardzo początkujący nawet jeszcze nie ruszyłem programowania obiektowego, wiec nie wszystko jeszcze pojmuję ;P. Pozdrawiam
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-08-2014, 09:23 AM
Post: #4
RE: Dynamiczne zwiekszanie tablicy.
Musiałbyś napisać co masz dalej w tej pętli bo ja napisałem dla testu i mnie pętla wykonuje się w nieskończoność.
To co chcesz zrobić jest do zrobienia, jednak niema potrzeby wymyślać koła odnowa. Chcesz to możesz zajrzeć do kodu ArrayList i zobaczyć jak to tam zostało zrealizowane.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-08-2014, 12:42 PM (Ten post był ostatnio modyfikowany: 08-08-2014 01:03 PM przez lolo.)
Post: #5
RE: Dynamiczne zwiekszanie tablicy.
Tak wygląda cały program:
    	Scanner in = new Scanner(System.in);
    	int suma = 0;
    	int ilosc = 0;
    	int[] tablica = new int[1];
    	int[] nowaTablica = new int[tablica.length+1];
    	System.out.println("--(WITAJ!)---\n");
    		for (int i = 0; i<tablica.length; i++){
   				System.out.print("Podaj liczbę (0 kończy zliczanie)");
   				tablica = nowaTablica;
   				tablica[i] = in.nextInt();
   		
   				if (tablica[i]==0){
   					ilosc = i;
    				break;
    			}
   			}
    	for (int i = 0; i<ilosc; i++)
    		suma = tablica[i] + suma;
    		System.out.println("\nSuma podanych przez Ciebie liczb wynosi: "+suma);
    		System.out.println("Ilość podanych liczb wynosi: "+ilosc);
    		System.out.println("\n---(KONIEC)---");
    }
Wieczorem przejrzę klasę ArrayList. Wiem, że to może za dużo ale prosiłbym tylko o naprowadzenie mnie na właściwy tok, a nie podanie gotowca. Bo w ten sposób niczego się nie nauczę. Z góry bardzo Ci dziękuję! Pozdrawiam
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-08-2014, 01:21 PM
Post: #6
RE: Dynamiczne zwiekszanie tablicy.
1. Jak dodajesz kod umieszczaj go między
Kod:
[shcode=java]
kod java
[/shcode]
2.
W swoim programie definiujesz raz wielkość tablic tablica oraz nowaTablica poczym w pętli do tablica przypisujesz referencję do nowaTablica. To, że napisałeś przed pętlą
int[] nowaTablica = new int[tablica.length+1]; 
nie znaczy, że nowaTablica będzie cały czas większa o 1 od tablica. Musisz w pętli tworzyć nowe obiekty nowaTablica większe od tablica o 1.
3.Napisałeś:
Cytat:Wiem ze trzeba kopiować elementy do nowej większej tablicy tylko jak to zrobić aby zwiększała się za kazdym dodaniem a nie tylko raz
Ale w swoim kodzie tego nie robisz.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-12-2014, 08:28 PM
Post: #7
RE: Dynamiczne zwiekszanie tablicy.
Poddaje się albo jestem na to za głupi albo za mało jeszcze wiem... Tongue
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-13-2014, 05:55 AM
Post: #8
RE: Dynamiczne zwiekszanie tablicy.
Ale po cholerę chcesz tworzyć coś co już jest w Javie i to w standardzie od bardzo dawna?

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-13-2014, 03:52 PM
Post: #9
RE: Dynamiczne zwiekszanie tablicy.
Masz racje - glupota Smile. Sprawa rozwiązana zajmę się innymi zagadnieniami i dalszą nauką. Dzięki i pozdrawiam!
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
08-26-2014, 05:30 PM
Post: #10
RE: Dynamiczne zwiekszanie tablicy.
Odnośnie wypełniania tablic mam jeszcze jedno pytanie.

Mam przykładowo 100-elementową tablicę. Mam program w którym jest menu 1. dodane elementy i 2. dodaj nowy element. Po wybranie poz. 1 ma się wgląd w już dodane elementy do tablicy. Natomiast po wybraniu poz. 2 można dodać jeden nowy element. Jak dodawać nowy element nie nadpisując starego i żeby za każdym razem można było dodawać tylko jeden nowy element? Ćwiczę, próbuję pisać jednak nadal mam problem z algorytmiką. Czy każdy ma takie problemy na początku nauki czy jeżeli tego od razu się nie zrozumie to można sobie darować jakiekolwiek programowanie?

Z góry dziękuję za odpowiedź i pozdrawiam!
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości