Dzialania na tablicy

0

Jak zrobić tablice na której będą dzialac różne metody ? ort! tablica Studenci wypelniona obiektami Student, i chcialbym przez metody ort! wprowadzic dane pola obiektu Student np imie nazwisko, edytowac itd.

0

Stwórz sobie klasę Student, a następnie utwórz tablicę tego typu klasowego.

0

@Patryk27 Tak? Pojawił sie problem z "int i" nie wiem o co chodzi?

package wprawadzdanee;

/**
 *
 * @author Grzesiek
 */
public class Student {
    String imie;  // pola klasy 
    String nazwisko;
    int numer_indeksu;
    String nazwa_specjalnosci;
    int rok_studiow;
    
    public Student(){
    }
     
    Student [] studenci = new Student[4];   
   
for ( int i=0;i<studenci.lenght;i++) {   // Tutaj sie pojawia problem z "int i"
    studenci[i] = new Student();
    
}
}
1
  1. length, a nie lenght,
  2. Komentarz pola klasy nie wnosi nic nowego do kodu (nie domyśliłbyś się, że to są pola klasy, bez tego opisu?), zatem jest zbędny.
  3. Nie uważasz, że warto byłoby kod zamknąć wewnątrz jakiejś metody? :) Twoja pętla nie znajduje się nigdzie.
0

@Patryk27 Teraz mam problem z typem metody i co zwraca, wiem ze tablice ale w zaden sposob nie chce zadzialac?
Tablica powinna byc wewnątrz metody czy poza nią ? Bo zastanawiam sie nad sensem. Jezeli metodą stworzymy tablice to bedziemy mogli jej uzywac innymi metodami ?

package wprawadzdanee;

public class Student {
    String imie;   
    String nazwisko;
    int numer_indeksu;
    String nazwa_specjalnosci;
    int rok_studiow;
    
    public Student(){
    }
     
   
      
   public ??? Tablica(){
   Student [] studenci = new Student[4];  
for (int i=0;i<studenci.length;i++) {
    studenci[i] = new Student();
return ??? ;}
}
}
0

Powoli, powoli, zapomnij o tych wszystkich tablicach i zacznij od napisania najbanalniejszego programu, który wpisuje na konsolę tekst Witaj Świecie.

0

No dobra :D

System.out.println("Witaj swiecie");

ale do czego zmierzasz ?

0

Nie, nie - wyślij cały kod aplikacji.

0
package witaj.swiecie;

public class WitajSwiecie {

    public static void main(String[] args) {
        System.out.println("Witaj swiecie!");
    }
    
}

0

O, czad - wiesz co oznacza void w konstrukcji public static void main()?

0

Tak, ze nie zwraca zadnej wartosci ?

2

No, dokładnie - czyli już wiesz, co musiałaby zwracać Twoja teoretyczna metoda Tablica z poprzedniego postu? ;-)

Tylko teraz tak: trzymajmy się zasady pojedynczej odpowiedzialności.
Mamy klasę Student - powinna ona zajmować się wyłącznie trzymaniem danych studenta, bez tworzenia wewnątrz niej żadnych tablic studentów czy innych bajerów.

Twój kod napisany porządnie wyglądałby (z palca) tak:

public class Student {
	String name;   
	String surname;
	int indexNumber;
	String speciality;
	int yearOfStudy;
	
	public Student setName(string name) {
		this.name = name;
		return this;
	}
	
	public String getName() {
		return this.name;
	}
	
	/* i tak dalej */

}

public class Main {
 
	public static void main(String[] args) {
		Student[] students = new Student[4];
		
		for (int i = 0; i < students.length; ++i) {
			students[i] = new Student();
		}
		
		students[0].setName("Jan Kowalski");
		students[1].setName("Ania Kowalska");
		students[2].setName("Dominik Kowalski");
		students[3].setName("Gosia Kowalska");
		
		System.out.println("Na naszej nie-nepotycznej uczelni znajdują się następujący studenci:");
		
		for (int i = 0; i < students.length; ++i) {
			System.out.println(students[i].getName());
		}
	}
 
}

Główne zmiany:

  1. Angielskie nazewnictwo.
  2. Wykorzystałem gettery oraz settery (Enkapsulacja).
  3. Oddelegowałem zarządzanie studentami do klasy głównej (Main), tak że klasa Student zajmuje się jedynie przetrzymywaniem danych.
    Przeanalizuj kod i pytaj ;-)
0

No tak ta metoda nic by nie zwracała, dlugo sie nad tym zastanawialem gdzie umiescic ta tablice.

  1. Tak wiem ze powinienem ale na tym etapie lepiej mi zrozumiec kod.
    No dobrze ale teraz chcialbym stworzyc metody edytujące zawartosc tablicy np wprowadzic dane pod wybrany indeks tablicy, albo usuniecie, gdzie znajdowaly by sie te metody i jak je wywolywac?
0

No dobrze ale teraz chcialbym stworzyc metody edytujące zawartosc tablicy np wprowadzic dane pod wybrany indeks tablicy, albo usuniecie, gdzie znajdowaly by sie te metody i jak je wywolywac?
Przecież masz to w moim kodzie.

0

Nie bardzo kojarze bo caly czas myslalem ze metoda musi miec naprzyklad taką konstrukcje "{typ zwracanej wartości} {nazwa metody} ( {lista argumentów}? ) {
{ciało metody}
}" ?
Wpisuje dane z poziomu programowania kodu? Musiałbym uzyc Scannera aby (nie wiem jak to nazwac) wpisywac z konsoli ?

0

Wpisuje dane z poziomu programowania kodu?
To zdanie jest zlepkiem jakichś bliżej losowych słów.

Musiałbym uzyc Scannera aby (nie wiem jak to nazwac) wpisywac z konsoli ?
Chwila, co. Przecież nic nie mówiłeś o wprowadzaniu danych przez użytkownika, a teraz nagle wyskakujesz ze scannerem.

0

Nie wiem jak to fachowo okreslic :( Chcialbym w konsoli wpisywac dane. A tak ogólnie to myślałem ze stworze wlasnie taki programik i bede go ulepszal naprzyklad wprowadzanie danych wybranego studenta, usuwanie danych wybranego studenta, wyswietlenia wybranego studenta itd wlasnie z konsoli.

0

@Patryk27 Idea byla taka zeby stworzyc taką tablice i za pomocą metod, edytowac ją w rózny sposób itd. Np stworze tablice (nie wiedzialem gdzie ), stworze kilka metod i w Mainie stworze obiekt i metodami bede w niego ingerowal. Wyprowadz mnie z bledu jesli cos zle zrozumialem :)

0

No to zrób klasę np: BazaDanych i wewnątrz niej zrób tę tablicę studentów jako prywatne pole i potrenuj sobie obiekowość opakowując w tej klasie różne metody np. dodawania do tablicy studenta czy szukania etc... A najlepiej zamiast tablicy użyć jakiegoś kontenera, bo wtedy nie ma problemu z usuwaniem.

0

Tak jak mówisz cos kombinuje. Tylko mam jedno pytanie gdybym chcial stworzyc metode zwracającą tablice, jaki to typ i co zwraca ?

 public ??? Tablica(){
   Student [] studenci = new Student[4];  
for (int i=0;i<studenci.length;i++) {
    studenci[i] = new Student();
return ??? ;}
0

No a jaki masz typ zmiennej? :P

0

No wlasnie Student[], wydaje mi sie ze tak próbowalem, dzieki wszystkim :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1