Java - Pomoć za rešavanje zadatka

Apsolutni sam početnik u Java programiranju. Treba da uradim sledeći zadatak:

Paja je krenuo u knjižaru želeći da kupi knjige (čije je naslove prethodno zapisao na spisak), kako bi dopunio svoju biblioteku. Ako je došao za vreme vikenda, mora se vratiti bez knjiga, jer je knjižara zatvorena, a ako je došao bilo koji radni dan, on će obaviti kupovinu.
Koristiti IF naredbu. Znamo da na njegovu policu ne može da stane više od devet novih knjiga, tako da će Paja puniti svoju korpu, svedok ne dostigne ovu cifru.
Koristiti neku od naredbi: FOR, WHILE, DO WHILE. Kada je Paja napunio korpu i došao na kasu, shvatio je da treću knjigu sa spiska treba da zameni knjigom „Programiranje".
Ovo sam iskucao, ali nisam siguran da li sam na dobrom putu
Kod:
public class RobotPaja{
    public static void main (string[] args){
        System.out.println("Dobrodošli na završni test");
        }
    
    String[] knjige = { "prvaKnjiga", "drugaKnjiga", "trecaKnjiga", "cetvrtaKnjiga",  "petaKnjiga", "sestaKnjiga", "sedmaKnjiga", "osmaKnjiga", "devetaKnjiga"};
    List<String> spisakKnjiga = java.util.Arrays.asList(knjige);
        ArrayList<Integer> spisakKnjiga = new ArrayList<>(9);
        knjiga.add(0, "prvaKnjiga");
        knjiga.add(1, "drugaKnjiga");
        knjiga.add(2, "trecaKnjiga");
        knjiga.add(3, "cetvrtaKnjiga");
        knjiga.add(4, "petaKnjiga");
        knjiga.add(5, "sestaKnjiga");
        knjiga.add(6, "sedmaKnjiga");
        knjiga.add(7, "osmaKnjiga");
        knjiga.add(8, "devetaKnjiga");
        }
    
    if(radniDan == true);{
        
        obaviKupovinu();
        idiKuci = false;
        }
    
    else(vikend == true){
        
        idiKuci();
        obaviKupovinu = false;
        }
    }
 
Poštovani,

Danas sam se registrovao na forumu jer sam video da je aktivan.

Molim za pomoć, već više od 10 dana se mučim da završim jedan zadatak i taman kada mislim da sam uspeo ponovo nađem problem.
Zaista se trudim da naučim sa razumevanjem ali posle 10 dana sam shvatio da sam totalno zaglavio u problem.

Stoga bih Vas molio ako možete da mi pregledate kod i da me ispravite tamo gde grešim... možda bi bilo najbolje ako neko može da mi prepravi kod pa da ja tačno vidim gde grešim jer mi više ništa nije jasno.

Zadatak je sledeći

Korišćenje naredbi za kontrolu toka u obradi niza

Dat je sledeći niz:

int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87}.

Potrebno je napraviti dva niza, jedan za smeštanje pozitivnih, a drugi za smeštanje negativnih elemenata niza array i potrebnu logiku koja će obaviti izvlačenje odgovarajućih elemenata u odgovarajući niz. Elemente jednake nuli ne treba ubacivati u rezultujuće nizove.

Drugim rečima, potrebno je iz niza array, koji je dat, izvući sve pozitivne elemente i smestiti u zaseban niz i izvući sve negativne elemente i smestiti u zaseban niz.

Takođe je potrebno odrediti i broj duplikata u nizu array. U tom slučaju, treba brojati i elemente koji su jednaki nuli. Pri tome, ne treba ispisivati koliko puta se ponavlja svaki element niza, već prebrojati i ispisati samo one elelemente koji se ponavljaju i koliko puta.

Naravno, potrebno je da napisana funkcionalnost bude primenljiva na bilo koji niz celobrojnih vrednosti, ne samo na ovaj konkretan primer.

Dakle da pojasnim, na outputu mora da imam posebno negativne brojeve, zatim posebno pozitivne brojeve ali da se ne ispisuju duplo i bez 0 (nula) i za kraj posebno da imam brojeve koji se pojavljuju vise puta.

Moj problem je što nikako ne mogu da izbacim nule i brojeve koji se ponavljaju iz pozitivnog niza.

Šaljem vam kopiju ekrana da vidite, sada više nemam ni te brojeve na izlazu. Pogubio sam se.

pomoc-krstarica.jpg


Radim u netbeans-u

Šaljem Vam kod koji sam do sada ispisao.

Unapred zahvalan na pomoći i objašnjenju

Kod:
package assignment;


import java.util.Arrays;

public class MyFirstAssignment {

    public static void main(String[] args) {

        int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
      
        Arrays.sort(array);
       
        int negativni = 0;
        int pozitivni = 0;
       
        for (int i = 0; i < array.length; i++) {
            if (array[i] < 0) {
                negativni++;
             
            }
        }
        pozitivni = array.length - negativni;
        negativni = array.length - pozitivni;
       
        int[] PozNiz = new int[pozitivni];
        int[] NegNiz = new int[negativni];

        int j = 0, k = 0;

        for (int i = 0; i < array.length; i++) {
            if (array[i] < 0) {
                NegNiz[j] = array[j];
           
            j++;
        }
           
        else {if (array[i] > 0)
            PozNiz[k] = array[i];
              k++;
              }
        }

        //System.out.println("array :" + Arrays.toString(array));
       
        System.out.println("Negativni Niz :" + Arrays.toString(NegNiz));
        System.out.println("Pozitivni Niz :" + Arrays.toString(PozNiz));

        for (int i = 0; i < array.length - 1; i++)
            if (array[i + 1] == array[i]) {
                //Totalno sam se pogubio na izbacuje mi duple brojeve a nije izbacio ni nule
                //Zar treba da radim jos jednu petlju?
                System.out.println("Dupli brojevi :" + array[i]);
                i = i + 1;
            }
        }
    }


Dobar dan, citam vas problem, i vec 2 dana sam blokirana na istom zadatku. Procitala sam sve odgovore i pogledala vas reseni zadatak ali mi jos uvek neke stvari nisu jasne. Nije fora da ga prekopiram nego pokusavam da razumem kako si stigao do resenja a pritom razumeo... Ako slucajno procitas, pomoc bi mi dobro dosla, jer sam se vec obratila profesoru koji mi je rekao da je verovatno problem u >=0 ....
Isto ne uspevam da izbacim nule u nizu pozitivnih i negativnih....
Pomoc mi je bas dobro dosla :) ana.maksimovic1989@gmail.com
 

Back
Top