Avatar billede drinkit Praktikant
06. maj 2014 - 21:54 Der er 8 kommentarer og
1 løsning

Que's i JAVA

Min lære har stillet mig nedenstående opgave.

Hvordan vil i løse den? Forklar med tekst, jeg skal nok selv forsøge at kode det :)

Design and implement a queue class MyStringQueue that holds elements of type String. Your queue must have a limited space i.e. it may contain only up to C_MAX_SIZE_QUEUE elements at any given time.
A queue is characterized by three main operations:
enqueue: to add new items to the end of the queue
dequeue: to retrieve and remove the first element on the queue
peek: like dequeue pop but without any element removal

ALSO:
Deal with overflow cases and illegal queue/dequeue in task 2 by creating your own exceptions
Avatar billede Slettet bruger
06. maj 2014 - 22:14 #1
LinkedList
addLast - her tjekker du bare, at køen ikke allerede er fuld
removeFirst
getFirst

At lave Exceptions til dette er overkill og unødvendigt.
Men eftersom opgaven beder om det:

MyException extends Exception
Avatar billede drinkit Praktikant
07. maj 2014 - 12:39 #2
Forstår ikke helt det sidste..

MyException extends Exception? Hvordan skal jeg bruge det
Avatar billede drinkit Praktikant
07. maj 2014 - 12:40 #3
Og jeg er pt. igang med at forsøge at bruge linkedlist til opgaven. Tak for hintet :)
Avatar billede Slettet bruger
07. maj 2014 - 12:54 #4
MyException extends Exception er bare en klasse, som er sin egen Exception og så kan du kast MyException når du er listen er fuld eller tom.

throw MyException();

Eventuelt læs API for Exceptions for hvordan du gør (hint, det er ikke anderledes end at lave sit eget Panel eller Label).
Avatar billede drinkit Praktikant
07. maj 2014 - 13:02 #5
Vil du mene at det her er tilstrækkeligt til at løse opgaven?

Eller har jeg grebet det forkert an.. Det virker en anelse for simpelt nemlig.

import java.util.LinkedList;

public class MyStringQueue {

    static LinkedList<String> ll = new LinkedList<String>();

    public static void main(String args[]) {
       
        //Predefine the que.

        ll.add("Line");
        ll.add("Martin");
        ll.add("Morten");
        ll.add("Fredrik");
        ll.add("Phillip");
        ll.add("Sascha");
        ll.add("Mikael");
        ll.add("Maijken");
        ll.add("Kirsten");
        ll.add("Poul");
       
        System.out.println(ll);
       
        //Use the enqueue method to add a new person to the queue and substract the one who waited the longest

        enAndDequeue("Maja");
        enAndDequeue("Henk");
        enAndDequeue("Mowgli");
        enAndDequeue("Hans");
       
        System.out.println(ll);
       
        peek();
       
    }

    private static void enAndDequeue(String addThis) {
        ll.add(0, addThis);
        System.out.println("Who's turn it is:" + ll.getLast());
        ll.removeLast();
    }
   
    private static void peek() {
        System.out.println("Who's turn it is:" + ll.getLast());
    }
   
}
Avatar billede Slettet bruger
07. maj 2014 - 13:19 #6
Hint: Tænk OOP

Man bør kunne oprette mange forskellige køer. Ikke bare en. Og de skal hver især arbejde individuelt og ikke have effekt på hinanden.
Avatar billede drinkit Praktikant
10. maj 2014 - 12:51 #7
ok, så jeg laver en klasse der opretter linked lists objekter. Og opretter så objekterne fra main metoden.. Og så behøver det hele jo heller ikke være static :)

men kan du give mig flere hints? jeg er stadig lidt på bar bund hvordan jeg skal gribe det an
Avatar billede drinkit Praktikant
17. februar 2015 - 12:01 #8
Smid svar.. Jeg lukker :)
Avatar billede drinkit Praktikant
10. januar 2016 - 21:56 #9
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester