Quantcast
  • Dragi prijatelji, obaveštavamo vas da je forum Hronika izdvojen iz foruma Politika i sada je poseban forum u kategoriji "Društvo".

Pomoć u izradi zadatka

Laske16

Početnik
Poruka
8
Pozdrav svima! Potrebna mi je pomoć u izradi zadatka u kojem je potrebno napraviti logiku koja će iz ovog zapisa izvući pojedinačne podatke:

  • ime,
  • prezime,
  • datum rođenja,
  • mesto rođenja.
U ovom kodu trebam uraditi sljedeće:
- Deklaracija i instanciranje liste treba da bude van for-petlje, tj. na početku glavnog programa.

- Kada odvojite ime, prezime, mesto i datum rođenja iz početnog String-a, to će Vam biti argumenti konstruktora klase Person.

- Ne treba da u listu posebno ubacujete imena, prezimena, datume i mesta. Jedina lista koja Vam je potrebna je lista osoba tj. lista objekata klase Person.

- Posle pravljenja objekta klase Person, njega treba ubaciti u listu osoba.

- Na samom kraju glavne klase treba ispisati listu osoba.
 

Prilozi

cronnin

Iskusan
Moderator
Poruka
6.582
Можда си превише закомпликовао.
Најпре сплитуј само по размакници (space) да раставиш овај улазни string на редове. Онда покрени петљу и извлачи један по један ред.
Онда у новој, малој унутрашњој петљи (int j = 0; j < 4 ; j++), сплитуј такве редове по тачка и коса црта критеријуму и упиши те вредности у променљиве. Додај те 4 променљиве и у main пре свега. Стрингови без проблем иду, једини ти је проблем трећа ставка за коју мораш да декларишеш:
Kod:
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("ddMMyyyy");
па онда доле у самој петљи:
Kod:
datumRodjenja =  LocalDate.parse(jedanRed[2], inputFormatter);
Када ти се заврши унутрашња петља, онда креирај објекат класе Person са тим параметрима и одмах га упиши у Array листу:
Kod:
 Person persona = new Person(ime, prezime, datumRodjenja, mjestoRodjenja);
listaPersona.add(persona);
Ту завршаваш и спољну петљу.
 
Poslednja izmena:

cronnin

Iskusan
Moderator
Poruka
6.582
Моја грешка. Како у једном реду има само 4 ставке, нема потребе за унутрашњом петљом која ће да иде од 0 до 3. То треба аутоматски да се додели.



Person.java
Kod:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Person {
  
    String ime;
    String prezime;
    LocalDate datumRodjenja;
    String mjestoRodjenja;
    DateTimeFormatter izlazniFormatDatuma = DateTimeFormatter.ofPattern("dd MMM yyyy");
  
    public Person(String ime, String prezime, LocalDate datumRodjenja, String mjestoRodjenja) {
        this.ime = ime;
        this.prezime=prezime;
        this.datumRodjenja = datumRodjenja;
        this.mjestoRodjenja = mjestoRodjenja;
    }
  
    public void stampajRed() {
        System.out.printf("%-10s %-15s %-20s %-10s\n",
                this.ime,
                this.prezime,
                this.datumRodjenja.format(izlazniFormatDatuma),
                this.mjestoRodjenja);
    }
  
    public static void stampajZaglavlje() {
        System.out.printf("%-10s %-15s %-20s %-10s\n", "ime", "prezime", "datum rodjenja", "grad");
        System.out.printf("-----------------------------------------------------------\n");
    }
  
}

Laske1.java

Kod:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;

public class Laske1 {

    public static void main(String[] args) {
      
        ArrayList<Person> listaPersona = new ArrayList<Person>();
        DateTimeFormatter ulazniFormatDatuma = DateTimeFormatter.ofPattern("ddMMyyyy");
      
        String text = new String("John.Davidson/05051988/Belgrade Michael.Burton/01011969/Krakow Ivan.Perkinson/23051980/Moscow "
                + "Anna.Sims/08121997/Berlin Bonnie.Leeds/28022006/NoviSad Mickey.Mouse/13061917/Danzig Danny.Donalds/13062019/Minsk");
      
        String[] jedanRed = text.split(" ");
      
        for(int i = 0; i < jedanRed.length ; i++) {
          
            String[] jednaStavka = jedanRed[i].split("[./]"); 
          
            listaPersona.add( new Person(
                        jednaStavka[0],
                        jednaStavka[1],
                        LocalDate.parse(jednaStavka[2], ulazniFormatDatuma),
                        jednaStavka[3])
                    ); 
        }
      
        Person.stampajZaglavlje();     
        for(int k = 0; k < listaPersona.size() ; k++) {
            listaPersona.get(k).stampajRed();
            }
      
    }

}



Колико видим, ти у свом коду треба само да обришеш унутрашњу петљу (редове 20 и 27), затим да промениш промениш индексе у редовима 22, 23, 24, 25, и онда да убациш редове 28 и 29 у петљу. Ако желиш, постави свој код овде, па ћу да пробам.
 
Poslednja izmena:

Top
  Blokirali ste reklame
Dragi prijatelju, nemojte da blokirate reklame - isključite Ad Blocker na Forumu, jer će tako mesto vaših susreta na Krstarici ostati besplatno za korišćenje.