Wątek zablokowany 2014-05-15 23:03 przez furious programming.

Wątek przeniesiony 2014-05-15 19:27 z Java przez bogdans.

Sortowanie obiektów w tablicy

0

Witam. Chciałbym posortować obiekty w tablicy. Nie wiem jak to zrobić. Znalazłem ten oto kawałek kodu, ale nie działa. Czy mógłby ktoś pomóc w napisaniu takiej klasy?

import java.util.Comparator;

public class Komparator implements Comparator<Karta>{

    @Override
    public int compare(Karta k1, Karta k2) {
        if(k2 == null) return -1;
        if(k1.getNumer(0) > k2.getNumer(0)) return 1;
        else if(k1.getNumer(0) < k2.getNumer(0)) return -1;
        else return 0;
    }
} 

Z góry dzięki

0

Zamieszczony kod niczego nie sortuje, musisz jeszcze wywołać funkcję sortującą.

Arrays.sort(tablica,new Komparator());
0

tylko Arrays.sort nie działa "ja mam w ten sposób:

Arrays.sort(hand[0], kom); //to znajduje sie w klasie main.java

mam taki komunikat:

The method sort(T[], Comparator<? super T>) in the type Arrays is not applicable for the arguments (Hand, Komparator)

ten komparator mam w osobnej klasie

dodanie znaczników <code class="java"> - furious programming

0

Ewentualnie możesz użyć wyrażeń lambda (nie testowane):

tablica.sort((x, y) -> x.getNumer(0).compareTo(y.getNumer(0)));
0

Musisz jako parametr podać tablicę, czyli hand a nie pierwszy element tablicy hand[0]...

0

    public int wygrana(Hand[] hand){
        //Podsumowanie "punktacji", kto zdobył więcej punktów
        for(int i=0; i<ilosc_graczy; i++){
            hand[0].getHand();
            Arrays.sort(hand[0], kom);
            hand[0].getHand();
        }

        return 1;
    }

samo hand nie działa

podkreśla sort i jest ten komunikat, który zamieściłem wyżej :D

0

Ten kod jest bez sensu:

  1. Argumentem metody sort musi być tablica, a nie jej pierwszy element.
  2. W pętli wykonujesz wielokrotnie jakieś bezsensowne operacje.
0

Klasa hand jest tablicą obiektów typu karta (5 kart w "ręce").
W grze, jako, że grać będzie do 3 osób, to tych "rąk" będzie trzy.
Hand jest więc tablicą 3 "handów", które to są tablicą 5 kart.
Pętla była po to by posortować wszystkie trzy "ręce", by karty w każdej z nich były po kolei.
A 0 jest użyte tylko dlatego, by przetestować czy jedna z tych "rąk" działa (jak zadziała to i pozostałe też), tylko że kompilator wyświetla błędy.
Generalnie można by było wstawić tam "i", jednak nie rozwiąże to chyba problemu.

1

Przeczytaj jakiś kurs podstaw Javy, a dopiero potem bierz się za pisanie gier.

0

dzięki za pomoc "znawco javy" ... bez sensu było pisanie tutaj o pomoc...

proszę o usunięcie tego tematu

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