ArrayList obsługa

ArrayList obsługa
NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
0

Ad. 1. Pisałem o mainie w jednym z poprzednich postów w punkcie 4.b., a sam punkt 4. dotyczył klasy Menu i właśnie tam miał być main. To wynikało z tego, że wydzieliliśmy klasę Menu do obsługi interfejsu i założyłem, że to właśnie Menu będzie klasą startową. U Ciebie klasą startową jest Dziennik, myślę, że to mniej logiczne (bo Dziennik miał być klasą reprezentującą dane), ale jeżeli Ci na tym zależy, to może tak zostać jako Twój wkład do pracy :)

Ad. 1.c.d. Może warto jeszcze dodać, że wydzielenie klasy Menu było zastosowaniem (częściowym) wzorca MVC - Model View Controller możesz sobie poczytać co to takiego w wolnej chwili...

Ad. 3. Twoja analiza przyczyny błędu wydaje się być błędna... No chyba, że źle Cię zrozumiałem:-) Dziwność ocen wynika z błędu w metodzie

Kopiuj
private void listaOcenPrzedmiot()

Przeanalizuj dokładnie jej treść. W analizie może pomóc poprawne sformatowanie kodu tabulatorami...

Co do skali ocen, to losowana jest jedna liczba ze zbioru {0, 1, ..., n-1}.
U nas n=4 czyli za pomocą wzoru o=r+2 ciąg {0,1,2,3} przekształcany jest na ciąg {2,3,4,5}.
Jeżeli chcesz mieć inny zbiór ocen, to musisz wymyślić sobie inne przekształcenie ciągu {0, 1, ..., n-1}.
Przekształcenie takie może być przekształceniem arytmetycznym (jak jest teraz), ale może też być bardziej rozbudowane (zawierać ify i switche, tylko po co, skoro w przypadku skali ocen można wszystko załatwić w jednej linii (stosując przekształcenie arytmetyczne)...

try-catch niepotrzebnie. Wyrzuć. Wiesz co to są wyjątki ?

Czy potrzebna jest metoda listaUczniow() jeżeli masz już metodę wypiszUczniow()? Przed odpowiedzią przeanalizuj treść tych metod i znajdź jakieś znaczące różnice :-)

Masz dwa skanery, wyrzuć ten z dziennika. A rand przenieś do Menu.

Co do tego jak bym to zrobił to:
dodajLosoweOceny zrobiłbym tak samo albo (gdyby mi się chciało) w bardziej wymyślny i różnorodny sposób dodawał oceny...
dodajUcznia tak samo, ale bez deklarowania zmiennej x (zawsze jedna linia mniej),
listaUczniow bym nie robił,
listaOcenPrzedmiot zrobiłbym poprawnie ;-)
metody, o które pytałeś zrobiłbym tak samo jak dla ucznia, czyli podobnie do Ciebie...

Co do null to oznacza ona brak obiektu. Np. gdy tworzysz nową zmienną/nowy atrybut, która/y ma przechowywać jakiś obiekt, ale żadnego obiektu do niej nie przypisujesz, to ma ona wartość null. Jeżeli coś już było zapisane, a nie chcemy, żeby nadal było, to można tam wstawić null.

W przypadku metod jest podobnie. Jeżeli z nagłówka metody wynika, że ma ona zwrócić obiekt klasy Uczen, to każdy wariant wykonania się tej metody musi się skończyć zwróceniem obiektu tej klasy, czyli jest niedopuszczalne żeby przejść przez tę metodę wymijając wszystkie return i po prostu dojść do końca. Dlatego, jeżeli nie chcemy nic zwracać (a nagłówek mówi, że coś zwracamy) to zwracamy null, czyli brak obiektu.

Być może znasz jakiś język, w którym można nic nie zwrócić i nie stoi to na przeszkodzie, żeby wynik takiej funkcji móc przypisać do zmiennej jako undefined albo coś innego, ale w javie jest inaczej. Albo metoda zwraca coś zawsze albo nigdy (gdy jest typu void).

Dziwnie to wygląda, że nie znasz programowania obiektowego i robisz projekt w bardzo obiektowym języku... Przerób sobie jakiś porządny kurs javowy w internecie... Potrzebujesz też większego zaangażowania w tworzenie algorytmów i przykładania do tego większej uwagi, żebyś rozumiał co i po co robisz ;) Tego można się nauczyć, im więcej projektów tym będzie lepiej... Potraktuj skalę ocen jako możliwość takiego doskonalenia się...

Jeżeli obawiasz się, że Twój projekt jest zbyt mało Twój, to zawsze możesz dodać więcej funkcjonalności nawet jeżeli nie są wymagane w zadaniu. Możesz też potraktować to wszystko jako ćwiczenie (mam nadzieję, że bardzo pouczające) i zacząć od zera, tym razem samodzielnie, bez patrzenia na moje wskazówki (i rozkazy), bo teraz powinieneś już umieć (w jakimś stopniu) rozwiązywać takie programistyczne problemy (chyba, że tylko przeklejałeś, wtedy cała moja pisanina na nic;-p).

VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Co do MVC, jezykow obiektowych osobiście wole strukturalne programowanie, ale trzeba się dostosować do tego co jest na zajęciach, a że nie ma nic tylko jest zadanie i róbcie to wiedze jakoś pozyskać gdzieś trzeba. Jestem Ci ogromnie wdzięczny za pomoc. Myśle, że jednak ten temat dużo wniesie, nie był tylko przklejanką.

Co do metody ** listaOcenPrzedmiot()**:

Kopiuj
private void listaOcenPrzedmiot(){
		
		System.out.println("Lista ocen z Przedmiotu:");
		for(int i = 0; i < dziennik.uczniowie.size(); i++){
	        System.out.println("[" + dziennik.uczniowie.get(i).id + "]" + dziennik.uczniowie.get(i).dane);    
	        for(int t = 0; t < dziennik.przedmioty.size(); t++){
	        	System.out.println(dziennik.przedmioty.get(t).nazwa);
	        		for(int k = 0; k < dziennik.przedmioty.size(); k++){
	        			System.out.println(dziennik.oceny.get(k).ocena + "-" + dziennik.przedmioty.get(t).nazwa);  
	        		}     
		   	 }          
	     }

Nie widzę z w niej nic złego. Wyświetla listę uczniów następnie przedmioty i oceny na koncu..
ew moze byc takie rozwiazanie, wzorowane na tym co wczesniej tworzyles:

Kopiuj
private void lista(){
		
	     System.out.println("Lista ocen z przedmiotow:");
	     
	     for(int i = 0; i < dziennik.uczniowie.size(); i++){
	          Uczen u = dziennik.uczniowie.get(i);
	          System.out.println(i + ". " + u.dane + " [" + u.id + "]");
	     
	          for(int k = 0; k < dziennik.przedmioty.size(); k++){
	        	  Przedmiot p = dziennik.przedmioty.get(k);
	        	  System.out.println(p.nazwa);
	        	  
	        	  for(int t = 0; t < dziennik.przedmioty.size(); t++){
		        	  Ocena o = dziennik.oceny.get(t);
		        	  System.out.println( o.ocena);
	        	  }
	          }
	     }
		
	}

No tak, roznicy w wyswietlaniu nie ma, ale na pewno jest tylko jaka?:<
na pewno wywolujemy interesujacy nas obiekt i moze o to tu chodzilo, w porownaniu do mojego wczesniejszego kodu gdzie tylko opereowalem na tablicy gdzie byly zapisane oceny?

Problem z losowaniem. To nie ten sam problem co z metoda wczesniej:
Patrz:

Kopiuj
Lista ocen z przedmiotow:
0. janek [0]
Matematyka
5.0
5.0
2.0
Polski
5.0
5.0
2.0
Angielski
5.0
5.0
2.0
1. marek [1]
Matematyka
5.0
5.0
2.0
Polski
5.0
5.0
2.0
Angielski
5.0
5.0
2.0

Dodajac dwoch uczniow mam taki efekt, jest blad czy mam pecha z losowaniem?

try-catch - może przecholowałem ale tu bardziej chodziło co jeśli np użytkownik poda w swichu litere, jeśli w podaj użytkownika poda litere, bo tego typu bledy chyba trzeba zabezpieczac, ja zrobilem to bez pomyslunku, bo pisze te kody po nocy ostatnio

listaUczniow() == wypiszUczniow()
Ja bylem tego swiadom ze te metody sa tym samym ale no nie wiem polecenie wymagalo stworzenia listy uzytkownikow, ale ze metoda wypiszUczniow() jest uzywana jest w innej metodzie to nie pomyslalem ze moge ja wykorzystac jako ta sama liste w tym "podpunkcie". Zgadza się to gupota.

Ta metoda dziala lecz...

Kopiuj
private void dodajLosoweOceny(Uczen u){
	     for(Przedmiot p : dziennik.przedmioty){
	    	   int a = 2 + rand.nextInt(4);
				Ocena o1 = new Ocena(a,p,u);
				dziennik.oceny.add(o1); 
	     }	     
	}
  • jest petla po przedmiotach i obiektach co w efekcie daje 3 losowania od razu
    = > a co jak chce miec jedno losowanie?
    => a co jak chce miec ich hm 20?

cos na zasadzie

Kopiuj
  for(Przedmiot p : 20){

nie dziala

  • powyzej pokazalem wyjscie z wyswietlenia ocen, za kazdym razem w kazdym przedmiocie jest to samo, uwazam ze jest tak dlatego ze petla przechodzi po przedmiotach i za kazdym razem wpisuje te same rand(omy) nie wiedziec juz czemu(bo random to random w sumie)

Polecisz jakiś DOBRY kurs java w wersji internetowej?

NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
1

A zatem no więc:

  • nie rozumiesz kodu, który piszesz...
  • nie jesteś obeznany z działaniem zagnieżdżonych pętli...
  • używasz nieistniejących konstrukcji języka (for(Przedmiot p : 20){) w zasadzie nie wiem co mając na uwadze... :(
  • gdybym był tego świadomy, to bym Cię wysłał do nauki języka, a nie mówił gdzie masz błędy...

Dodawanie ocen działa poprawnie. Błąd jest w wypisywaniu zarówno w metodzie void listaOcenPrzedmiot() jak i void lista(). I nie powiem Ci jaki. Zapomnij do czego ta metoda służy, przeanalizuj kod słowo po słowie, zinterpretuj co ta metoda właściwie robi w tej chwili i zacznij rozumieć co piszesz...

Warunkami przejścia do następnego etapu są:

  1. Wytłumaczenie co oznacza konstrukcja for( ...:... )
  2. Wyjaśnienie dlaczego obecnie funkcje void listaOcenPrzedmiot() i void lista() nie robią tego co myślisz, że robią.
  3. Napisanie kodu, który za pomocą pętli narysuje taką choinkę:
Kopiuj
     #
     #
    ###
     #
    ###
   #####
     #
    ###
   #####
  #######
     #
     #

Jeżeli nie wiesz jak się zabrać za choinkę, to zacznij od zwykłego trójkąta:

Kopiuj
#
##
###

Nigdy nie korzystałem z żadnego internetowego kursu javy, więc nic nie polecę. Myślę, że warto zajrzeć na oficjalny tutorial na stronie Oracle, powinien być kompletny (ale nie wiem czy dobry na początek).

VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Gdybym wszystko rozumiał i wiedział programowanie nie stwarzało by mi problemu i nie było by mnie tu. Nie potrzebował bym pomocoy z takimi gupotami jakimi są dla ciebie pewnie moje kłopoty.
Co do

Kopiuj
for(Przedmiot p : 20){

Wiem ze takie cos nie istnieje chodzilo tylko o pokazanie schematu.. ze chcialem przejsc 20 razy przez petle po przedmiotach majac je 3, no musial bym pewnei zrobic to w forze osobnym i penteleke ale jesli jest taka metoda to 3 przedmioty losowane x 20 to nie wychodzi 20, rozumiesz?

Dziękuję Ci za pomoc i nie ma co się załamywać jako nauczyciel czy pomocnik sprawdzasz się :P Wiem, że nie jest ze mną łatwo ale staram sie...

Odpowiadajac
1.

Kopiuj
for( ... : ... ) 
  • czyli takie javove for each, w moim przypadku dziala to tak:
Kopiuj
for(Typ_Obiektu nazwa_obiektu : nazwa_tablicy){ ... }

czyli obiektem może bycnp Uczen a ide po liscie uczniow
2. Coz...
te dwie pozywzsze metody operuja na idexach list z klasy dziennik a nie na samych obiektach jak to robi petla for each?
cos w ten desen(jesli nie o to chodzilo to pomysly mi wyszly):

Kopiuj
private void listaOcenPrzedmiot(){
		
	     System.out.println("Lista ocen z przedmiotu:");
	     
	     for(Uczen u : dziennik.uczniowie){
	          System.out.println(u.dane + " [" + u.id + "]");
	     
	          for(Przedmiot p : dziennik.przedmioty){
	        	  System.out.println(p.nazwa);
	        	  
	        	  for(Ocena o : dziennik.oceny){
		        	  System.out.println( o.ocena);
	        	  }
	          }
	     }
		
	}
  • tylko ze wykorzystujac metode w taki sposob dodajac kolejnego uzytkownika, temu pierwszemu widac jak przypisuja sie oceny tego drugiego..wiec cos nie halo, albo z dodawaniem(a tu mowiles ze ok), albo z wyswietlaniem(wiec nadal cos by bylo TU nie tak?)

Roznica jest drastyczna, ale czy w tym przypadku tez? Przeciez wszystkie oceny przedmioty uczniowie sa wpisane do list, to czemu by nie operowac wlasnie na nich? Chyba ze moje rozumowanie jest totalnie zle. No i zostaje problem losowania i w tej chwili duplikacji ocen..

Troche zbaczamy z tematu ale:
3.

Kopiuj
public class start {
	public static void main(String[] args) {
		int wys = 4;
	    for (int i = 0; i < wys; i++) {
	      for (int j = 0; j < wys; j++) {
	        if (j <= i) {
	          System.out.print("*");
	        }
	      }
	      System.out.println();
	    }	    
		    
	}
}
Kopiuj
public class start {
	public static void main(String[] args) {
		 int wys = 4;
		 int ile  = 3;
		  for (int k = 0; k < ile; k++) {
		    for (int i = 0; i < wys; i++) {
		      for (int j = 0; j < wys - i; j++) {
		        System.out.print(" ");
		      }
		      for (int j = 0; j <= i * 2; j++) {
		        System.out.print("*");
		      }
		      System.out.println();
		    }
		  } 
		    
	}
}
NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
1
  1. Tak.
  2. Nie.
  3. Tak i nie.

Ad1. Poprawnie i myślę, że rozumiesz;)

Ad2. W każdej z tych dwóch funkcji miałeś dwa błędy. Pierwszy prawdopodobnie był pomyłką edytorską i liczyłem, że wykryjesz ją analizując kod słowo po słowie etc. Zamiast tego zwykłe pętle for zamieniłeś na pętle foreach (tak się to fachowo nazywa) i jednocześnie cały ten błąd wyeliminowałeś. Drugim błędem jest to, że jest w ogóle źle, bo nie rozumiesz co tak napisane pętle robią... Moim celem jest zmuszenie Cię, żebyś zaczął rozumieć co one tam robią w tej chwili (i nie jest to problem z obiektowością tylko z używaniem pętli, dlatego dostałeś zadanie 3. na pętle, żebyś im poświęcił choć chwilę). Jeżeli nie będziesz mógł wpaść na to co te pętle obecnie robią, to coś Ci podpowiem, gdy pozostałe zadania będą wykonane poprawnie. W tym wykonana będzie pierwsza część tego zadania (w wersji bez for-each), więc przypatrz się uważnie tym funkcją słowo po słowie i znajdź coś co nie pasuje (no może podpowiem, że nie pasuje jedno słowo)...

Ad3. Trójkąt dobrze, choć wolałbym bez ifa, a i Tobie pomogłoby to napisać poprawnie choinkę, bo choinka jest źle (i nie chodzi o pieniek, możemy go sobie darować). Przypatrz się choince, którą masz wyprodukować i tej, którą produkujesz. I zrób to bez ifów...

Problem polega nie na tym, że nie wszystko rozumiesz, tylko na tym, że zabrałeś się za spory projekt (jak na początkującego) bez znajomości języka, w którym masz pisać oraz co najmniej bez umiejętności używania zagnieżdżonych pętli, co nie jest zagadnieniem z javy tylko chyba z każdego popularnego (poza asemblerem) języka programowania i ogólnie algorytmiki jako takiej...

Zakładałem, że znasz podstawy i masz tylko problem ze zrozumieniem tego jak obiektowo rozwiązać jakiś problem. Wyszło na to, że uczyłem Cię biegać, gdy jeszcze nie potrafisz dobrze chodzić. Więc teraz staram się sprawić, żebyś przykładał więcej staranności i dokładności do stawiania zwykłych kroków:)

0

Chyba chodzilo Ci o pieniek no to cos takiego?

Kopiuj
package xxx;

public class start {

	

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		int wys = 4;
        int pien = 2;   
        	 
        	 //choinka
           for (int i = 0; i < wys; i++) {
        	
             for (int j = 0; j < wys - i-1; j++) { // dopełnianie spacjami
               System.out.print(" ");
             }
             for (int j = 0; j <= i; j++) { //lewa
               System.out.print("*");
             }
             for (int j = 0; j <= i-1; j++) { //prawa
                 System.out.print("*");
               }
             System.out.println();
           }
             
           //pien
             for (int i=0; i<pien; i++){
              for (int j=1; j<wys-2; j++){// dopełnianie spacjami 
            	  
              
            System.out.print("   ");
              System.out.print("*");
              System.out.println();
             }
             }
             
           }
            
		    
	
}

ale juz sie w to nie bawie musze dokonczyc tamto i rozwiazac problemy ktore aktualnei wystepuja..

NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
0

Właśnie na tym polega problem, że zabierasz się za budowę domu uważając, że zakup ziemi pod ten dom to jakieś fanaberie...

VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Program ukończony chyba dzięki za pomoc. Cały czas będę się rozwijał ale nie chce już zaśmiecać forum takimi schamatami chonki np. Jeśli jest opcja to możemy pogadać na pw. I możemy tam jeszcze pogadać.
Na ta chwile temat do zamknięcia.

NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
0

Udało Ci się zrobić poprawne wyświetlanie ocen?

VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Moim zdaniem petla wyswietlajaca po indexach byla ok, rzuciles hasloa for() przerobilem ale to sie nie sprapwdzilo, albo zle zrozumialem. Ja nie widze tu problemu w wyswietlaniu bo wyswietla ono teoretycznie dobrze tylko w losowaniu,ale ze liczby(oceny) i tak chce by byly losowe to tak naprawde bez znaczenia. Zmodyfikowalem losowanie i losuje to inaczej. Troche dookola ale..

Jesli masz suchy chleb a ktos ci mowi ze cos popsules bo powinna ci wyjsc kromka z maslem, a jestes na poziomie skorki od chleba.. :D to ciezko to, poziomu swojej widzy nie ukryalem od poczatku lecz, to o co ci chodzilo tak dokladnie i tak nie wiem. Mniejsza. Bez tego tez rozwiazalem problem nas woje sposob, liczy sie w koncu funkcjonalnosc.

Dorobilem jeszcze usuwanie i zapis do pliku, ale to tak juz gratis bo chcialem wiecej funkcjonalnosci. Dorobil bym cos jeszcze ale brak pomyslow byl.

NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
0

Jeżeli nie widzisz problemu, to proponuję byś się upewnił wypisując oceny tak:

Kopiuj
System.out.println( o.ocena +" "+ p.uczen.dane +" "+ p.przedmiot.nazwa);

</del> ```java System.out.println( o.ocena +" "+ o.uczen.dane +" "+ o.przedmiot.nazwa); ```
edytowany 1x, ostatnio: notexists
VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Albo nie rozumiem albo u mnie nie da się tego wykonać tak po prostu..
Twoja struktura:

Kopiuj
System.out.println( o.ocena +" "+ p.uczen.dane +" "+ p.przedmiot.nazwa);

Czyli wyswietlane jest
-ocena z klasy ocena
-dane ucznia z klasy przedmiot? ja nie mam danych o uczniu podpietych do tej klasy w koncu wzorowalem sie an twoich klasach i to mnie troche dziwi..
-nazwa przedmiotu w przedmiocie

Bardziej dobitnie klikajac p. nie mam dostepu do uczen czy przedmiot

Moge zrobic tak:

Kopiuj
System.out.println( o.ocena +" "+ p.nazwa +" "+ u.dane);

-ale pewnie to nie o to ci chodzi
-1. ocena z klasy ocena
-2. nazwa przedmiotu z klasy ocena(chyba tak samo)
-3. dane o uczniu z klasy uczen ( z ta roznica ze nie przechodza przez klase przedmiot...)

Nie wiem jaki wynik by dalo twoje polecenie, domyslam sie ze

Ocena(1), Jakas nazwa ucznia z przedmiotu(2), kotry jest tu(3)

NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
0

Wybacz, literówki mi się wkradły:( Powinno być tak:

Kopiuj
System.out.println( o.ocena +" "+ o.uczen.dane +" "+ o.przedmiot.nazwa);
0

Nie rozumiem co w tym lepszego.. i poprawnego?
Lista ocen z przedmiotu:
4.0 dsa Matematyka
2.0 dsa Polski
3.0 dsa Angielski
4.0 dsa Matematyka
2.0 dsa Polski
3.0 dsa Angielski
4.0 dsa Matematyka
2.0 dsa Polski
3.0 dsa Angielski

NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
0

W tym nie ma nic poprawnego, za to może Ci to bardziej uzmysłowić jak działa obecnie Twoja funkcja wypisująca i dlaczego jednak nie potrafisz (a przynajmniej do tej pory nie potrafiłeś) zbudować tej funkcji poprawnie...
Myślę, że mógłbyś zobaczyć więcej mając dwóch użytkowników i w każdej z pętli wypisywać taki jakby nagłówek aktualnie wybranego w tej pętli Ucznia/Przedmiotu.
Jeżeli to Ci też nie pomoże, to ostatnią deską ratunku będzie wypisanie ocen w ten sposób:

Kopiuj
System.out.println( o.ocena +" "+ o.uczen.dane +" "+ o.przedmiot.nazwa+" "+o);

wtedy wypiszą Ci się identyfikatory/adresy Ocen (co zadziała, o ile w Ocena nie masz metody String toString(), a nie masz z tego co pamiętam) i coś z nich wywnioskuj...

VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

1x.Chcialem zrobic jeszcze generowanie pdf, wykorzystuje takie cos itext, raczej malo klopotliwe. Mam inny problem z którym licze, że mi pomożecie, nie tworzyłem nowego wątku bo cały program jest opisany tutaj, poza tym Pan któy mi pomagał jest w temacie.

Kopiuj
private void generujPDF() {
		if(dziennik.uczniowie == null || dziennik.uczniowie.isEmpty()){
			 System.out.println("Pusta lista...");
		 }
		 else{
			  
		 Uczen u=wybierzUcznia();
		 
		 
	     if(u != null){
	    	 
	    	 Document document = new Document();
	    	    try {
	    	      PdfWriter.getInstance(document, new FileOutputStream("karta.pdf"));
	    	      document.open();

	    	      document.add(new Paragraph("Dziennik:"));
	    	      document.add(new Paragraph("Imie i nazwisko:" + u.dane));
	    	      
	    	      Przedmiot p = null;
	    	      document.add(new Paragraph("Przedmiot:" + p.nazwa));
	    	      Ocena o = null;
	    	      document.add(new Paragraph("ocena:" + o.ocena));
	    	   
				 	
	    	     
	    	      //document.add(new Paragraph("Imie i nazwisko:" + p.nazwa));
	    	    } catch (DocumentException de) {
	    	      System.err.println(de.getMessage());
	    	    } catch (IOException ioe) {
	    	      System.err.println(ioe.getMessage());
	    	    }
	    	    document.close();
	    	  }

	     System.out.println("Wygenerowales karte dla ucznia " + u.dane);
		 }
	}

Chodzi o linie:

Kopiuj
Przedmiot p = null;
	    	      document.add(new Paragraph("Przedmiot:" + p.nazwa));
	    	      Ocena o = null;
	    	      document.add(new Paragraph("ocena:" + o.ocena));

Nie mam dostepu do Przedmiot i Ocena w metodzie generujPDF() i nie bardzo wiem jak go sobie wyrobic?

Wymyslilem:

Kopiuj
for(Przedmiot p : dziennik.przedmioty){
	    	    	  document.add(new Paragraph("Przedmiot:" + p.nazwa));
	    	    	  for(Ocena o : dziennik.oceny){
	    	    		  document.add(new Paragraph("Ocena:" + o.ocena));  
	    	    	  }
	                 System.out.println(p.nazwa);
	    	      }

ale oceny sie dubluja w przypadku >2 uczniow

2a.
Dochodzi tylko cos kodowanego, jak dostwalem to wczesniej to dalo sie to odebrac za pomoca get()... tylko to nie jest tablica zeby tak to zwrocic, coz chcialbym wiedziec jaki jest problem, jednak przewertowujac troche internet :
-pisza ze to moze by problem z konwersja do stringa? uzylem w sumie o.toString() lecz moje oceny sa zapisywane jako float i nie wiem gdzie mial by sie z nich robic string
-piszac taka konstrukcje zwraca sie flase o.equals(t)- > co moze oznaczac ze ocena nie przypisuje sie do przedmiotu?

Kopiuj
3.0 asd Matematyka test.Ocena@330bedb4
  • na podstwie twojej lini i dwoch uzytkownikow mozna zauwazyc ze oceny dodaja sie zawsze do pierwszego uzytkownika, ale nie wiem czy ja cos pomieszalem czy o to ci chodzilo? i to sa ciagle te same oceny , czyli kolejny uzytkownik dostaje te same oceny podpisane ocenami uztkownika pierwszego... no fajnie..
    -ponadto kazda nastepna losowana ocena jest taka sama ? ale to wiem od poczatku , dlatego liczenie sredniej jest takie sobie ..
    ale jak to zmienic.. eh ;/

i nadal uwazam ze to co napisalem powyzej to kwestia dodawnia a nie wyswietlania

edytowany 3x, ostatnio: viamarimar
NO
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
0

test.Ocena@330bedb4 jest efektem, który miałeś uzyskać. Liczbę, którą tam widzisz możesz traktować jako identyfikator obiektu. Czyli jeżeli przy wypisywaniu wszystkich ocen liczby dla poszczególnych obiektów się powtarzają, to można z tego wywnioskować, że ?

A PDF tak samo jak wcześniej zrobiłeś bez PDF...

Wybacz, ale uważam, że mój udział w dyskusji w tym temacie, był czasem zmarnowanym. Prawdopodobnie nie będę się już udzielał w tym temacie (chyba, że napiszesz coś wartościowego), bo nie chcę tego czasu marnować na Ciebie więcej, bo nie ma to najmniejszego sensu. Błędnie określiłem Twoje umiejętności i przez to praktycznie napisałem za Ciebie ten program, poczynając od ogólnej koncepcji jak to zrobić obiektowo, a kończąc na implementacji metod... Szczerze mówiąc, uważam, że nie potrafisz programować w javie i w innych językach chyba też jest dość marnie. I byłoby lepiej dla Ciebie i dla Świata gdybyś to zadanie oblał...

Kod Twojego projektu jest na prawdę niezbyt skomplikowany, na tyle, że ktoś kto ma pojęcie o programowaniu może na to spojrzeć i widzi co jest źle. Próbuję pokazać Ci gdzie robisz błąd, pokazałem Ci kierunek, później drogę, później wskazałem rzekę, przyprowadziłem na sam brzeg, kazałem przyklęknąć i nachylić się nad wodą. Ale wypić musisz sam.

Nie wiem jak trzeba być nierozgarniętym albo intelektualnie ubogim, żeby nie móc przysiąść i poanalizować chwilę wyniki swojego programu, gdy ktoś Ci dokładnie mówi, w którym miejscu jest błąd i jak go zaprezentować i wykryć, a Ty musisz tylko zrozumieć co ta za błąd...

Jeżeli dla Ciebie to jest zbyt trudne, bo oczekujesz prostych rozwiązań, może jakiejś fajnej funkcji, która rozwiąże problem, wolisz dokładać nowe funkcjonalności, patrzeć szerzej i dalej, byle tylko na spokojnie się nie przyjrzeć chwile temu co masz i coś zrozumieć, to wybacz, ale ja wysiadam z tego pociągu...

Skoro wbrew temu co Ci napisałem uważasz, że w dodawaniu jest błąd, to znajdź go tam i napraw...

VI
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:66
0

Nie uważam, że zmarnowałeś czas. Ciesze się że mi pomagałeś i że są tacy ludzie. W początkowych postach zaznaczyłem, że jestem laikiem co do javy. Znam podstawy obiektowości lecz z java mam dopiero pierwszy kontakt. Co do samego zadania, nie jest ono na ocene żebym je miał oblewać czy zaliczać, był to przykład na którym miałem się coś nauczyć i częściowo się też tak stało. Myślę, ze forum właśnie jest od wskazania rzeki czy drogi i dzieki Ci.

Co do błędu.. hmm jedyny błąd jaki dostrzegłem w tej metodzie ale to już chyba na podsumowanie będzie. to:

Kopiuj
 for(int i = 0; i < dziennik.oceny.size(); i++){

iteracja po złej liscie była, poprawiając to oceny się losują chyba ok. Kwestia tego ze zagniezonej petli w tym wypadku nie ograniam jak zrobic zeby wyswietlaly sie oceny z przedmiotu a w przedmiocie a a nie na zasadzie abc , tak przyznaje sie. Jednak kwestia czasu i się zmieni.

Funkcje? O czym ty mówisz? Zreszta chyba w javie ich nie ma..

Czasem trzeba kogoś wrzucić do wody żeby nauczył się pływać, a nie podcinać skrzydała przy problemach i skreślać na pierwszych schdach, to tak ode mnie, bo jak by człowiek miał się poddać kiedy ktoś inny mu powie stop to nie było by tego wszystkiego co dziś nas otacza(postęp, technologia,życie).

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)