Kolekcje problem z zadaniem

0

Witam mam takie zadanko Utwórz klasę City, dodaj w niej atrybuty:

name (String)
population (int)
Klasa powinna mieć też konstruktor przyjmujący wszystkie 2 parametry

Następnie w pliku Main3.java:

Napisz metodę public static List<City> initialize(), która utworzy 5 obiektów klasy City, doda je do listy, którą następnie zwróci.
Napisz metodę public static List<City> firstSubList(List<City> list, int start, int end ), która zwróci sublistę elementów listy list o początku start i końcu end. Wykorzystaj dowolną pętlę.
Napisz metodę public static List<City> secondSubList(List<City> list, int start, int end ), która zwróci sublistę elementów listy list o początku start i końcu end. Wykorzystaj wbudowaną metodę List.subList(int fromIndex, int toIndex).

i nie mam pojęcia jak go wykonać . Biorę się za to już 2 dzień i nie jestem w stanie nic wymyśleć zmieniałem City na listę bawiłem się w dodawanie i dziedziczenie innych class i nic mi nie chce wyjść kodu na razie nie zamieszczam bo ciągle i tak go usuwam i piszę na nowo ponieważ nie ogarniam. Byłbym wdzięczny za jakąś podpowiedź . Np. czy do pierwszej metody coś jeszcze trzeba dodać np void czy da się to rozwiązać za pomocą tak napisanej .

0

Ale w czym masz konkretnie problem? Patrzysz na zadanie i lecisz po kolei.
#edit: https://docs.oracle.com/javase/tutorial/java/index.html - tutaj masz wszystko co Ci potrzebne

0
RewAnd napisał(a):

Ale w czym masz konkretnie problem? Patrzysz na zadanie i lecisz po kolei.
Zrobiłem klasę CIty umieściłem w nim

public class City{
    private  String name;
    private Integer population;


    public City(String name, Integer population) {
        this.name = name;
        this.population = population;
    }

    public City() {

    }

    public String getName() {
        return name;
    }

    public Integer getPopulation() {
        return population;
    }

i nie wiem jak zrobić w klasie Main3 żeby utworzyło mi 5 obiektów City w tej metodzie public static List<City> initialize(){} .

0

Zamiast Integer to lepiej użyć inta - tak jest napisane w zadaniu :)
Konstruktor bezargumentowy jest niepotrzebny. Zrobisz City city = new City(); city.getName() i masz NullPointerException.

nie wiem jak zrobić w klasie Main3 żeby utworzyło mi 5 obiektów City w tej metodzie public static List<city> initialize(){}

https://docs.oracle.com/javase/tutorial/java/javaOO/objects.html - tutaj masz jak się tworzy obiekty. Po prostu zrób to w metodzie initialize().

0
RewAnd napisał(a):

Zamiast Integer to lepiej użyć inta - tak jest napisane w zadaniu :)
Konstruktor bezargumentowy jest niepotrzebny. Zrobisz City city = new City(); city.getName() i masz NullPointerException.

nie wiem jak zrobić w klasie Main3 żeby utworzyło mi 5 obiektów City w tej metodzie public static List<city> initialize(){}

https://docs.oracle.com/javase/tutorial/java/javaOO/objects.html - tutaj masz jak się tworzy obiekty. Po prostu zrób to w metodzie initialize().

Ogarnąłem już dzięki wielkie :D

0

co robię źle że wyskakuje mi null 0 ?



import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Main3  {



    public static List<City> initialize(){
       List<City> city = new LinkedList<>();
       city.add(new City("Andrzej",1));
       city.add(new City("Julia",2));
       city.add(new City("Marek",3));
       city.add(new City("Tomek",4));
       city.add(new City("Arek",5));

            for(City s : city ){
                System.out.println(city);
                  }   return city;
   }


    public static void main(String[] args) {


        City city = new City();

        System.out.println(city.getName()+city.getPopulation());

    }




}

1

Tworzysz sobie City domyślnym konstruktorem który nie ustawia pól z tej klasy. Potem wypisujesz te wartości które są nullem. Czego tutaj nie rozumiesz?

0
Jasskier47 napisał(a):

co robię źle że wyskakuje mi null 0 ?



import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Main3  {



    public static List<City> initialize(){
       List<City> city = new LinkedList<>();
       city.add(new City("Andrzej",1));
       city.add(new City("Julia",2));
       city.add(new City("Marek",3));
       city.add(new City("Tomek",4));
       city.add(new City("Arek",5));

            for(City s : city ){
                System.out.println(city);
                  }   return city;
   }


    public static void main(String[] args) {


        City city = new City();

        System.out.println(city.getName()+city.getPopulation());

    }




}

Próbujesz wypisać nieistniejące dane. W konstruktorze "City city = City(tutaj)" musisz przekazać jakieś dane, żeby to zadziałało. Natomiast jeśli chcesz wypisać to, co siedzi w liście, użyj API strumieni.

0

muszę użyć initialize ale nie wiem jak to zrobić żeby działało

0
Hegemon napisał(a):
Jasskier47 napisał(a):

co robię źle że wyskakuje mi null 0 ?



import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Main3  {



    public static List<City> initialize(){
       List<City> city = new LinkedList<>();
       city.add(new City("Andrzej",1));
       city.add(new City("Julia",2));
       city.add(new City("Marek",3));
       city.add(new City("Tomek",4));
       city.add(new City("Arek",5));

            for(City s : city ){
                System.out.println(city);
                  }   return city;
   }


    public static void main(String[] args) {


        City city = new City();

        System.out.println(city.getName()+city.getPopulation());

    }




}

Próbujesz wypisać nieistniejące dane. W konstruktorze "City city = City(tutaj)" musisz przekazać jakieś dane, żeby to zadziałało. Natomiast jeśli chcesz wypisać to, co siedzi w liście, użyj API strumieni.

o strumieniach sie jeszcze nie uczyłem .

1

Żeby było krótko, bo nie wiem co ty chcesz zrobić:
initialize zwraca ci listę. Możesz sobie tę listę do czegoś przypisać i wypisać jej elementy.
Możesz zrobić print(initialize.get(0).getName());

0
public class Main3  {                              
                                                   
                                                   
                                                   
                                                   
   public static List<City> initialize(){          
          List<City> city = new LinkedList<>();    
          city.add(new City("Andrzej ",1));        
          city.add(new City("Julia ",2));          
          city.add(new City("Marek ",3));          
          city.add(new City("Tomek",4));           
          city.add(new City("Arek",5));            
                 return city;                      
      }                                            
                                                   
    public static void main(String[] args) {       
        System.out.print(initialize());            
                                                   
    }                                              
1

Odnośnie ostatniego posta. Jak chcesz tak wypisywać, to sobie napisz toString
coś w tym stylu:

@Override
public String toString()
{
    return getName() + " " + getPopulation();
}

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