porównanie zawartości tablic int

0

Witam, czy istnieje klasa porównująca zawartość (chodzi o ciąg cyfr, tylko każda cyfra jest zapisana pod innym indeksem tablicy) tablic int o takiej samej długości i zwraca np true gdy pierwsza tablica ma większą zawartość od drugiej [???]

Lub jak mogę to zrobić w najkrótszy sposób?

int[]tablica1 = new int[]{4,3,3,2};
int[]tablica2 = new int[]{4,2,5,1};

int[]zmienna = new int[1];
int[]sprawdzajaca = tablica1;

for(int i=tablica1.length-1; i>=0; i--)
    if(tab[i]<tab1[i]{
        zmienna=tablica1;
        tablica1=tablica2;
        tablica2=zmienna;
    }

System.out.println("tablica1 > tablic2 " + Arrays.equals(tablica1, sprawdzajaca));
0

piszesz, że chcesz sprawdzić czy jedna tablica jest większa od drugiej, ale nie bardzo wiem w jakim sensie.
Chodzi o to czy suma int'ów z jednej jest większa od sumy int'ów drugiej?
Jeżeli tak to:

int sum1=0;
int sum2=0;
for(int i:tablica1) sum1+=i;
for(int i:tablica2) sum2+=i;
//porównujesz sobie teraz sumy

Czy na poszczególnych idexach? Musisz sprecyzować co rozumiesz pod pojęciem "jedna tablica większa od drugiej" Metodą equals sprawdzisz chyba tylko czy zawartość jest taka sama.

0

Trochę nie jasno to napisałem, przepraszam.
mam porównać dwie duże liczby które nie mieszczą się w żadnym z zakresów typów domyślnie dostępnych w języku JAVA. Z tym że nie mogę korzystać z klasy BigInteger, i operacje muszę zrobić na tablicach.

i porównując np. takie tablice:

  tablica1 = {4,3,3,2};
  tablica2 = {4,2,5,1};

ma być na takiej zasadzie jak bym porównywał dwie liczby 4332 i 4251 która jest większa

0

No to zmienia postać rzeczy :)
To w sumie proste. Porównujesz sobie kolejne indeksy i jeżeli którys jest wiekszy to znaczy ze cala liczba jest większa (tylko w przypadku tablic o takim samym rozmiarze!).

int[] tablica1 = new int[]{4,4,3,5}
int[] tablica2 = new int[]{4,4,2,6}

public int sprawdz(int[] tablica1, int[] tablica2){
     if(tablica1.equals(tablica2)) return 0;
     for(int i=0;i<tablica1.length();i++){
         if(tablica1[i]>tablica2[i]) {
            return 1;
            continue;
         }
         if(tablica1[i]<tablica2[i] ) {
            return -1;
            continue;
     }
}

Coś mogłem namieszać z break i continue (z palca pisze, nie mam tu środowiska), ale generalnie zasada jest odpowiednia: porównujesz cyfry z odpowiednich miejsc, czyli 4xxx z 4xxx (tysiące się zgadzają), x4xx z x4xxx (setki też), xx3x z xx2x (dziesiątki pierwszej sa wieksze wiec cala liczba jest wieksza i funkcja zwraca wynik bez dalszego sprawdzania) -> 1 jezeli wieksza, -1 mniejsza, 0 rowne.

EDIT:
Oczywiście jeżeli tablice nie są tych samych rozmiarów, to większa będzie liczba w większej tablicy, przy założeniu że początkowe indeksy nie są zerami.

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