Funkcja Scanner do kilku obiektów.

Funkcja Scanner do kilku obiektów.
G0
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:76
0

Mam za zadanie stworzyc wprowadzanie danych kilku studentów z klawiatury. Nie chce zeby jakies imie i nazwisko zostalo przypisane do wszystkich. Tylko do kazdego z osobna. Jak widac ponizej program dziala źle.
Tresc zadania: Utwórz, która umożliwia wprowadzanie danych studenta z konsoli. Użyj do tego celu
znanego już obiektu Scanner oraz klasy Student z zadania 2.

Kopiuj

package studia;

import java.util.Scanner;

public class Studia {
    public static void main(String[] args) {
       
      Scanner scan = new Scanner(System.in);
      System.out.println("Podaj imie, nazwisko, numer indeksu: ");
      String imie = scan.next();
      String nazwisko = scan.next();
      int numer_albumu = scan.nextInt();
       
      Student student1 = new Student(imie,nazwisko,numer_albumu,"Informatyka niestacjonarne",1);
       student1.PokazDane();
       
       System.out.println("--------------------------");
       
       Student student2 = new Student(imie, nazwisko);
       student2.PokazDane();
       
       System.out.println("--------------------------"); 
       
       Student student3 = new Student(2883);
       student3.PokazDane();
       
       System.out.println("--------------------------"); 
       
       Student student4 = new Student("Krzysiek", "Onar", "Bezpieczenstwo wewnetrzne");
       student4.PokazDane();
       
    }
    
}

package studia;
public class Student {
    String imie;  // pola klasy 
    String nazwisko;
    int numer_indeksu;
    String nazwa_specjalnosci;
    int rok_studiow;
    
    public Student(String imie, String nazwisko, int numer_indeksu, String nazwa_specjalnosci, int rok_studiow){ // konstruktor I
    this.imie = imie;
    this.nazwisko = nazwisko;
    this.numer_indeksu = numer_indeksu;
    this.nazwa_specjalnosci= nazwa_specjalnosci;
    this.rok_studiow = rok_studiow;
    }
    
    public Student(String imie, String nazwisko){ // konstruktor II
    this.imie = imie;
    this.nazwisko = nazwisko;
    
    }
    
    public Student(int numer_indeksu){     // konstruktor III
    this.numer_indeksu = numer_indeksu;
    } 
    public Student(String imie, String nazwisko, String nazwa_specjalnosc){  // konstruktor IV
    this.imie= imie;
    this.nazwa_specjalnosci = nazwa_specjalnosc;
    this.nazwisko = nazwisko;
    }
    
    public void PokazDane(){
    
        System.out.println("Imie: "+this.imie);
        System.out.println("Nazwisko: "+this.nazwisko);
        System.out.println("Numer indeksu: "+this.numer_indeksu);
        System.out.println("Nazwa specjalnosci : "+this.nazwa_specjalnosci);
        System.out.println("Rok studiow : "+this.rok_studiow);
    }
}

oto wynik:

Kopiuj
Podaj imie, nazwisko, numer indeksu: 
Jan
Kowalski
2016
Imie: Jan
Nazwisko: Kowalski
Numer indeksu: 2016
Nazwa specjalnosci : Informatyka niestacjonarne
Rok studiow : 1
--------------------------
Imie: Jan
Nazwisko: Kowalski
Numer indeksu: 0
Nazwa specjalnosci : null
Rok studiow : 0
--------------------------
Imie: null
Nazwisko: null
Numer indeksu: 2883
Nazwa specjalnosci : null
Rok studiow : 0
--------------------------
Imie: Krzysiek
Nazwisko: Onar
Numer indeksu: 0
Nazwa specjalnosci : Bezpieczenstwo wewnetrzne
Rok studiow : 0
edytowany 4x, ostatnio: grzesiekm0
bogdans
Wstawiaj kod w znaczniki <code=java></code>
bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
0

A jakie jest pytanie?


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
G0
Na podstawie zadania 1, utwórz aplikacją zawierającą klasę „Student”, która posiada następujące pola: imię, nazwisko, nr_indeksu, nazwa specjalności, rok_studiow. Dla pól dobierz odpowiedni typ danych. Utwórz cztery przeciążenia konstruktorów dla tej klasy (każda wersja konstruktora powinna przyjmować przynajmniej jeden parametr - nie tworzyć konstruktora pustego). Utwórz metodę wyświetlającą dane o studencie. Utwórz cztery obiekty klasy student, każdy korzystający z innego przeciążenia konstruktora podczas tworzenia obiektu. Dla każdego obiektu uruchom metodę wyświetlającą
G0
To jest tresc na jakiej podstawie wykonalem ten program. Nastepne zadanie to wczytac dane z klawiatury.
bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
1

Wyświetl podpowiedź i odczytaj dane.

Kopiuj
...
      int numer_albumu = scan.nextInt();
 
      Student student1 = new Student(imie,nazwisko,numer_albumu,"Informatyka niestacjonarne",1);
      student1.PokazDane();
 
      System.out.println("--------------------------");
      System.out.println("Podaj imie i nazwisko: ");
      imie = scan.next();
      nazwisko = scan.next(); 
      Student student2 = new Student(imie, nazwisko);
      student2.PokazDane();
...

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
L1
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 15 godzin
  • Postów:14
1

Mam pewien pomysł na rozwiązanie tego zadania, ale z użyciem listy i nie wiem czy w związku z tym nie wykraczam po za materiał jaki miałeś do tej pory, ale wrzucę, może da to tobie pomysł jak uprościć to co napisałem.

Klasa główna Studia:

Kopiuj
package studia;
 
import java.util.ArrayList;
import java.util.Scanner;
 
public class Studia {
    public static void main(String[] args) {
        ArrayList lista = new ArrayList<Student>();
        Scanner scan = new Scanner(System.in);
        int opcja;
        
        do{
            
            System.out.println("1. Wprowadz dane studenta. 2. Pokaż listę studentów. 3.Wyjście.");
            opcja =scan.nextInt();
            
        switch(opcja){
            case 1:{
                String imie;
                String nazwisko;
                int numer_indeksu;
                String nazwa_specjalnosci;
                int rok_studiow;
                
                Student st = new Student();
                
                System.out.print("Podaj imię: ");
                imie = scan.next();
                st.setImie(imie);
                System.out.print("Podaj nazwisko: ");
                nazwisko = scan.next();
                st.setNazwisko(nazwisko);
                System.out.print("Podaj numer indeksu: ");
                numer_indeksu = scan.nextInt();
                st.setNumer_indeksu(numer_indeksu);
                System.out.print("Podaj nazwę specjalizacji: ");
                nazwa_specjalnosci = scan.next();
                st.setNazwa_specjalnosci(nazwa_specjalnosci);
                System.out.print("Podaj rok studiów: ");
                rok_studiow = scan.nextInt();
                st.setRok_studiow(rok_studiow);
                
                lista.add(st);
            }
            break;
            case 2:{
                    for (int i = 0; i < lista.size(); i++) {
                        System.out.print((i + 1) + ". ");
                        System.out.println(lista.get(i));
                    }
            }
            break;
            case 3:{
                
            }
            break;
            default:{
                        System.out.println("Nie ma takiej opcji!");
            }
        }
        }while(opcja !=3);
        }
}

Klasa Student:

Kopiuj
package studia;
public class Student {
    String imie;  // pola klasy 
    String nazwisko;
    int numer_indeksu;
    String nazwa_specjalnosci;
    int rok_studiow;
 
    public Student(){
        
    }
    
    public Student(String imie, String nazwisko, int numer_indeksu, String nazwa_specjalnosci, int rok_studiow){ // konstruktor I
    this.imie = imie;
    this.nazwisko = nazwisko;
    this.numer_indeksu = numer_indeksu;
    this.nazwa_specjalnosci= nazwa_specjalnosci;
    this.rok_studiow = rok_studiow;
    }
 
    public Student(String imie, String nazwisko){ // konstruktor II
    this.imie = imie;
    this.nazwisko = nazwisko;
 
    }
 
    public Student(int numer_indeksu){     // konstruktor III
    this.numer_indeksu = numer_indeksu;
    } 
    public Student(String imie, String nazwisko, String nazwa_specjalnosc){  // konstruktor IV
    this.imie= imie;
    this.nazwa_specjalnosci = nazwa_specjalnosc;
    this.nazwisko = nazwisko;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }

    public void setNumer_indeksu(int numer_indeksu) {
        this.numer_indeksu = numer_indeksu;
    }

    public void setNazwa_specjalnosci(String nazwa_specjalnosci) {
        this.nazwa_specjalnosci = nazwa_specjalnosci;
    }

    public void setRok_studiow(int rok_studiow) {
        this.rok_studiow = rok_studiow;
    }

    public String getImie() {
        return imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public int getNumer_indeksu() {
        return numer_indeksu;
    }

    public String getNazwa_specjalnosci() {
        return nazwa_specjalnosci;
    }

    public int getRok_studiow() {
        return rok_studiow;
    }
    
    @Override
    public String toString(){
        return "Imię: " + imie + ", Nazwisko: " + nazwisko + ", Numer indeksu: " + numer_indeksu + 
                ", Nazwa specjalności: " + nazwa_specjalnosci + ", Rok studiów: " + rok_studiow;
    }
}

Dodam, że mój pomysł wymagał dodania geterów i seterów oraz domyślnego konstruktora.

Na pewno nie jest to kompletny program ponieważ warto by dodać obsługę wyjątków (ponieważ jak jako opcję wpiszemy literkę to program się psuje), a także usuwanie studentów z listy, ale może pomoże w rozwiązaniu zadania.

GO
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 5 lat
0

Klasa główna Studia:

Kopiuj
package studia;
 
import java.util.ArrayList;
import java.util.Scanner;
 
public class Studia {
    public static void main(String[] args) {
        ArrayList lista = new ArrayList<Student>();
        Scanner scan = new Scanner(System.in);
        int opcja;
        
        do{
            
            System.out.println("1. Wprowadz dane studenta. 2. Pokaż listę studentów. 3.Wyjście.");
            opcja =scan.nextInt();
            
        switch(opcja){
            case 1:{
                String imie;
                String nazwisko;
                int numer_indeksu;
                String nazwa_specjalnosci;
                int rok_studiow;
                
                Student st = new Student();
                
                System.out.print("Podaj imię: ");
                imie = scan.next();
                st.setImie(imie);
                System.out.print("Podaj nazwisko: ");
                nazwisko = scan.next();
                st.setNazwisko(nazwisko);
                System.out.print("Podaj numer indeksu: ");
                numer_indeksu = scan.nextInt();
                st.setNumer_indeksu(numer_indeksu);
                System.out.print("Podaj nazwę specjalizacji: ");
                nazwa_specjalnosci = scan.next();
                st.setNazwa_specjalnosci(nazwa_specjalnosci);
                System.out.print("Podaj rok studiów: ");
                rok_studiow = scan.nextInt();
                st.setRok_studiow(rok_studiow);
                
                lista.add(st);
            }
            break;
            case 2:{
                    for (int i = 0; i < lista.size(); i++) {
                        System.out.print((i + 1) + ". ");
                        System.out.println(lista.get(i));
                    }
            }
            break;
            case 3:{
                
            }
            break;
            default:{
                        System.out.println("Nie ma takiej opcji!");
            }
        }
        }while(opcja !=3);
        }
}

Klasa Student:

Kopiuj
package studia;
public class Student {
    String imie;  // pola klasy 
    String nazwisko;
    int numer_indeksu;
    String nazwa_specjalnosci;
    int rok_studiow;
 
    public Student(){
        
    }
    
    public Student(String imie, String nazwisko, int numer_indeksu, String nazwa_specjalnosci, int rok_studiow){ // konstruktor I
    this.imie = imie;
    this.nazwisko = nazwisko;
    this.numer_indeksu = numer_indeksu;
    this.nazwa_specjalnosci= nazwa_specjalnosci;
    this.rok_studiow = rok_studiow;
    }
 
    public Student(String imie, String nazwisko){ // konstruktor II
    this.imie = imie;
    this.nazwisko = nazwisko;
 
    }
 
    public Student(int numer_indeksu){     // konstruktor III
    this.numer_indeksu = numer_indeksu;
    } 
    public Student(String imie, String nazwisko, String nazwa_specjalnosc){  // konstruktor IV
    this.imie= imie;
    this.nazwa_specjalnosci = nazwa_specjalnosc;
    this.nazwisko = nazwisko;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }

    public void setNumer_indeksu(int numer_indeksu) {
        this.numer_indeksu = numer_indeksu;
    }

    public void setNazwa_specjalnosci(String nazwa_specjalnosci) {
        this.nazwa_specjalnosci = nazwa_specjalnosci;
    }

    public void setRok_studiow(int rok_studiow) {
        this.rok_studiow = rok_studiow;
    }

    public String getImie() {
        return imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public int getNumer_indeksu() {
        return numer_indeksu;
    }

    public String getNazwa_specjalnosci() {
        return nazwa_specjalnosci;
    }

    public int getRok_studiow() {
        return rok_studiow;
    }
    
    @Override
    public String toString(){
        return "Imię: " + imie + ", Nazwisko: " + nazwisko + ", Numer indeksu: " + numer_indeksu + 
                ", Nazwa specjalności: " + nazwa_specjalnosci + ", Rok studiów: " + rok_studiow;
    }
}

Cześc,
sorry, ze odkopuje temat, ale mam kilka pytań :)

            String imie;
            String nazwisko;
            int numer_indeksu;
            String nazwa_specjalnosci;
            int rok_studiow;
            
            Student st = new Student();

Dlaczego to musi być w case 1?
Jeżeli jest w klasie Studia pod zmienna int opcja to np. jak wprowadzimy 3 studentow to pokaze dane wszystkie takie same (3-go studenta). Dlaczego?

public Student(){
    
}

Dlaczego w klasie student musi byc konstruktor bez parametrów?

@Override
public String toString(){
    return "Imię: " + imie + ", Nazwisko: " + nazwisko + ", Numer indeksu: " + numer_indeksu + 
            ", Nazwa specjalności: " + nazwa_specjalnosci + ", Rok studiów: " + rok_studiow;
}

Zamienia wszystko na Stringi? Nie ma do tego żadnego odwołania, skąd program wie, podczas wyswietlania tego ?

Get'y i set'y słuza do przechowywania obiektow w pamieci tak?

edytowany 1x, ostatnio: gohangbr
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)