Autor Wątek: Arraylist w Java ME  (Przeczytany 4000 razy)

Offline karol_123

  • Użytkownik

# Czerwiec 05, 2010, 14:11:20
Witam wszystkich serdecznie,

Mam do Was takie oto pytanie jak zaimplementować ArrayList w javie me, lub czym ją można zastąpić w Java ME, ponieważ niestety arraylist nie występuje w javie ME. Potrzebna jest mi do pomocy przy losowaniu jednej karty z tali 24 Kart mam już naisany program w zwykłej Javie i chciałbym go przerobić na Java ME będę wdzięczny za pomoc:)
Pozdrawiam!

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline nietopereek

  • Użytkownik

# Czerwiec 05, 2010, 14:23:27
ArrayList nie ma w J2Me ale możesz skorzystać z klasy Vector i stworzyć wektory http://jcs.mobile-utopia.com/jcs/18554_Vector.html

Offline Solgar

  • Użytkownik

# Czerwiec 05, 2010, 16:29:14
ArrayList to prawie to samo co Vector. Największą różnicą między tymi dwiema klasami jest to, że Vector jest tzw "thread safe" a ArrayList nie.

Offline karol_123

  • Użytkownik

# Czerwiec 07, 2010, 13:59:58
 mam tutaj drobny problem który opisałem poniżej

public static void main(String[] args) {
     while(true){
        Vector <Integer> wylosowane = new Vector()  ;// tutaj mam błąd (generics are not supported in -source 1.3
(use -source 5 or higher to enable generics), jeżeli usunę <Integer> bo błędy mam przy wylosowane w kodzie ponizej jaka jest tego przyczyna

        Dalej dajKarte = new Dalej(wylosowane);
        //daj.addActionListener(dajKarte);
        wylosowane.add(dajKarte.nrKarty());
        for (int j=0; j<wylosowane.size(); j++){
            sumagracz = + Karta.Talia(wylosowane.get(j)).retVal();
            nazwy = nazwy + Karta.Talia(wylosowane.get(j)).showName()+"\n";
        }
        if (sumagracz>=21)break;
        Stop pasuje = new Stop();
        //pass.addActionListener(pasuje);
        if (pasuje.zwroc())break;
        }//koniec while od losowania

        if(Surface.wygrana(sumagracz)){
            System.out.println("Wygrałeś");
        }
        else System.out.println("Wygrał komputer");


    }//koniec main

Offline Yarek

  • Użytkownik

# Czerwiec 07, 2010, 15:25:23
(Integer) wylosowane.get(j)

Offline Pomar1

  • Użytkownik

# Czerwiec 07, 2010, 16:19:09
mam tutaj drobny problem który opisałem poniżej

public static void main(String[] args) {
     while(true){
        Vector <Integer> wylosowane = new Vector()  ;// tutaj mam błąd (generics are not supported in -source 1.3
(use -source 5 or higher to enable generics), jeżeli usunę <Integer> bo błędy mam przy wylosowane w kodzie ponizej jaka jest tego przyczyna

        Dalej dajKarte = new Dalej(wylosowane);
        //daj.addActionListener(dajKarte);
        wylosowane.add(dajKarte.nrKarty());
        for (int j=0; j<wylosowane.size(); j++){
            sumagracz = + Karta.Talia(wylosowane.get(j)).retVal();
            nazwy = nazwy + Karta.Talia(wylosowane.get(j)).showName()+"\n";
        }
        if (sumagracz>=21)break;
        Stop pasuje = new Stop();
        //pass.addActionListener(pasuje);
        if (pasuje.zwroc())break;
        }//koniec while od losowania

        if(Surface.wygrana(sumagracz)){
            System.out.println("Wygrałeś");
        }
        else System.out.println("Wygrał komputer");


    }//koniec main

Vector to vector - nie nadawaj mu typu innego niż Vector  ;D Co najwyżej później (przy wybieraniu jakiegoś elementu z listy) rzutuj(chyba tak to się zwało) wybrany element na dany typ.

Offline grrr

  • Użytkownik

# Czerwiec 07, 2010, 17:54:32
        Vector <Integer> wylosowane = new Vector()  ;// tutaj mam błąd (generics are not supported in -source 1.3
(use -source 5 or higher to enable generics), jeżeli usunę <Integer> bo błędy mam przy wylosowane w kodzie ponizej jaka jest tego przyczyna?
Właśnie taka... Zmień opcje kompilacji tak, żeby kompilował kod do wersji 5 (lub wyższej) javy, bo w 1.3  nie ma genericsów. Problem z angielskim?

Offline karol_123

  • Użytkownik

# Czerwiec 07, 2010, 19:04:26
no niestety z angielskiego to ja mistrzem nie jestem:/

Offline Solgar

  • Użytkownik

# Czerwiec 07, 2010, 19:39:04
        Vector <Integer> wylosowane = new Vector()  ;// tutaj mam błąd (generics are not supported in -source 1.3
(use -source 5 or higher to enable generics), jeżeli usunę <Integer> bo błędy mam przy wylosowane w kodzie ponizej jaka jest tego przyczyna?
Właśnie taka... Zmień opcje kompilacji tak, żeby kompilował kod do wersji 5 (lub wyższej) javy, bo w 1.3  nie ma genericsów. Problem z angielskim?
Ke? W JavaME nie ma, nigdy nie było i najprawdopodobniej nigdy nie będzie "generic types".

Offline karol_123

  • Użytkownik

# Czerwiec 08, 2010, 21:30:43
A czy mógłby mi ktoś podpowiedzieć co zrobić bo próbuje zrealizować swoje zadanie na vector ale nie moge i cały czas wywala mi blędy bo nie obsluguje int czy jakos tak i wywala mi błedy wszedzie tam gdzie one wystepuja a potrzebna mi jest taka tablica aby przy losowaniu mozna bylo do niej dodawac elementy.

Offline owyn

  • Użytkownik

# Czerwiec 08, 2010, 21:41:38
Przy dodawaniu zmiennej do wektora, rzutujesz na Integer:
int a = 5;
vector.add((Integer) a);
Przy pobieraniu z wektora, rzutujesz na Integer, a potem na int:
int a = (int) ((Integer) vector.get(0));

Offline karol_123

  • Użytkownik

# Czerwiec 08, 2010, 22:21:32
zrobiłem rzutowanie i nic nie pomogło
tutaj mój pierwotny kod while(true){
        Vector  wylosowane = new Vector();

        Dalej dajKarte = new Dalej(wylosowane);
        //daj.addActionListener(dajKarte);
        wylosowane.addElement(dajKarte.nrKarty());
        for (int j=0; j<wylosowane.size(); j++){
           sumagracz = +  Karta.Talia(wylosowane.elementAt(j)).retVal();
            nazwy = nazwy + Karta.Talia(wylosowane.elementAt(j)).showName()+"\n";
        }
        if (sumagracz>=21)break;
        Stop pasuje = new Stop();
        //pass.addActionListener(pasuje);
        if (pasuje.zwroc())break;
        }
widze ze chyba przeliczyłem sie z siłami:/ na arrayliscie wszystko dzialalo bez problemu

Offline owyn

  • Użytkownik

# Czerwiec 08, 2010, 22:32:30
Ok, mój błąd: w wersji 1.3 nie ma jeszcze takiego rzutowania. Prawidłowo to powinno być tak:
Vector vec = new Vector();
int a = 5;
vec.add(new Integer(a));
int b = ((Integer) vec.get(0)).intValue();

Offline karol_123

  • Użytkownik

# Czerwiec 09, 2010, 23:08:11
Mam do Was jeszcze jedno pytanie mam nadzieje że ostatnie pytanie rzutowanie pomogło błędy pozostały jedynie w pogrubionych  linijkach pobierane są dane i metoda retVal() zwraca wartość a showName() zwraca nazwe a błąd to  cannot find symbol i czy to też trzeba rzutować jak poprzednie jeżeli tak to w jaki sposób. Będę wdzięczny za pomoc
    
public static void main(String[] args) {
     while(true){
        Vector  wylosowane = new Vector();

        Dalej dajKarte = new Dalej(wylosowane);
        //daj.addActionListener(dajKarte);
        wylosowane.addElement(new Integer(dajKarte.nrKarty));
        //wylosowane.addElement(dajKarte.nrKarty());
        for (int j=0; j<wylosowane.size(); j++){

          sumagracz = +  Karta.Talia(wylosowane.elementAt(j)).retVal();
           nazwy = nazwy + Karta.Talia(wylosowane.elementAt(j)).showName()+"\n";

        }
        if (sumagracz>=21)break;
        Stop pasuje = new Stop();
        //pass.addActionListener(pasuje);
        if (pasuje.zwroc())break;
        }//koniec while od losowania

        if(Surface.wygrana(sumagracz)){
            System.out.println("Wygrałeś");
        }
        else System.out.println("Wygrał komputer");


    }
« Ostatnia zmiana: Czerwiec 10, 2010, 12:47:10 wysłana przez karol_123 »

Offline karol_123

  • Użytkownik

# Czerwiec 10, 2010, 21:41:28
Mógłby mi ktoś pomóc;/