Avatar billede yezbarh Nybegynder
11. september 2005 - 22:53 Der er 11 kommentarer og
1 løsning

Array i java -1.3?

Hvordan ser en array ud i Java -1.3?

På javabog.dk er virker det ikke i -1.4 :)
Avatar billede arne_v Ekspert
11. september 2005 - 22:56 #1
arrays er der mig bekendt ikke ændret ved fra 1.0 til 1.5

der er ændret i ArrayList m.v. i 1.5

hvilket eksempel driller dig ?
Avatar billede yezbarh Nybegynder
11. september 2005 - 23:01 #2
Ja, nu kan jeg slet ikke finde hvor det er !-)
Kan du give et eksempel på en array, ;o]?
Avatar billede arne_v Ekspert
11. september 2005 - 23:04 #3
sortering på alle mulige måder:

import java.util.*;

public class Sorting {
    public static void main(String[] args) {
        String[] sa = { "A", "a", "B", "b", "Æ", "æ", "Å", "å",
                        "Aa", "aA", "AA", "aa"};
        System.out.println("sort 1:");
        Arrays.sort(sa);
        for(int i = 0; i < sa.length; i++) {
            System.out.println("  " + sa[i]);
        }
        System.out.println("sort incasesensitive 1:");
        Arrays.sort(sa, String.CASE_INSENSITIVE_ORDER);
        for(int i = 0; i < sa.length; i++) {
            System.out.println("  " + sa[i]);
        }
        System.out.println("sort 2:");
        Arrays.sort(sa, new C1());
        for(int i = 0; i < sa.length; i++) {
            System.out.println("  " + sa[i]);
        }
        System.out.println("sort incasesensitive 2:");
        Arrays.sort(sa, new C2());
        for(int i = 0; i < sa.length; i++) {
            System.out.println("  " + sa[i]);
        }
        System.out.println("sort custom");
        Arrays.sort(sa, new C3());
        for(int i = 0; i < sa.length; i++) {
            System.out.println("  " + sa[i]);
        }
    }
}
class C1 implements Comparator {
    public int compare(Object o1, Object o2) {
        return ((String)o1).compareTo((String)o2);
    }
    public boolean equals(Object obj)  {
        return false;
    }
}
class C2 implements Comparator {
    public int compare(Object o1, Object o2) {
        return ((String)o1).compareToIgnoreCase((String)o2);
    }
    public boolean equals(Object obj)  {
        return false;
    }
}
class C3 implements Comparator {
    private final static String coll = "ABCDEFGHIJKLMOPQRSTUVWXYZÆØÅ";
    private int compare(String s1, String s2, int ix) {
        int v1 = coll.indexOf(Character.toUpperCase(s1.charAt(ix)));
        int v2 = coll.indexOf(Character.toUpperCase(s2.charAt(ix)));
        if(v1 < v2) {
            return -(ix + 1);
        } else if(v1 > v2) {
            return (ix + 1);
        } else {
            if(((ix + 1) < s1.length()) && ((ix + 1) < s2.length())) {
                return compare(s1, s2, ix+1);
            } else {
                return 0;
            }
        }
    }
    public int compare(Object o1, Object o2) {
        return compare((String)o1, (String)o2, 0);
    }
    public boolean equals(Object obj)  {
        return false;
    }
}
Avatar billede yezbarh Nybegynder
11. september 2005 - 23:06 #4
dvs. en array er bare
String[] noget = {"1","2"};

?
Avatar billede arne_v Ekspert
11. september 2005 - 23:07 #5
det der er et String array med initialisering
Avatar billede arne_v Ekspert
11. september 2005 - 23:07 #6
her er et eksempel med int arrays:

import java.util.Arrays;

public class Merger {
    public static void main(String[] args) {
        int[] a1 = { 1,3,5,7,29,11,10,4,8,13 };
        int[] a2 = { 1,9,5,30,21,12,17,4,36,13 };
        // test for already in
        int[] a12 = new int[a1.length + a2.length];
        int n = 0;
        for(int i = 0; i < a1.length; i++) {
            boolean alreadyin = false;
            for(int j = 0; j < n; j++) {
                if(a1[i] == a12[j])  {
                    alreadyin = true;
                    break;
                }
            }
            if(!alreadyin) {
                a12[n] = a1[i];
                n++;
            }
        }
        for(int i = 0; i < a2.length; i++) {
            boolean alreadyin = false;
            for(int j = 0; j < n; j++) {
                if(a2[i] == a12[j])  {
                    alreadyin = true;
                    break;
                }
            }
            if(!alreadyin) {
                a12[n] = a2[i];
                n++;
            }
        }
        for(int i = 0; i < n; i++) {
            System.out.print(" " + a12[i]);
        }
        System.out.println();
        // sort first and merge
        Arrays.sort(a1);
        Arrays.sort(a2);
        int[] a12x = new int[a1.length + a2.length];
        int nx = 0;
        int ix1 = 0;
        int ix2 = 0;
        while(ix1 < a1.length && ix2 < a2.length) {
            if(a1[ix1] == a2[ix2]) {
                a12x[nx] = a1[ix1];
                nx++;
                ix1++;
                ix2++;
            } else if(a1[ix1] < a2[ix2]) {
                a12x[nx] = a1[ix1];
                nx++;
                ix1++;
            } else {
                a12x[nx] = a2[ix2];
                nx++;
                ix2++;
            }
        }
        while(ix1 < a1.length) {
            a12x[nx] = a1[ix1];
            nx++;
            ix1++;
        }
        while(ix2 < a2.length) {
            a12x[nx] = a2[ix2];
            nx++;
            ix2++;
        }
        for(int i = 0; i < nx; i++) {
            System.out.print(" " + a12x[i]);
        }
        System.out.println();
    }
}
Avatar billede yezbarh Nybegynder
11. september 2005 - 23:09 #7
Smid svar, og tak for hjælpen.
Avatar billede arne_v Ekspert
11. september 2005 - 23:10 #8
ok
Avatar billede arne_v Ekspert
11. september 2005 - 23:10 #9
beklager at jeg ikke havde nogle simplere eksempler på lager
Avatar billede yezbarh Nybegynder
11. september 2005 - 23:11 #10
Helt iorden. Har fået svar på hvordan jeg lavede en array, så det skal du ikke beklage over ;o]
Avatar billede arne_v Ekspert
11. september 2005 - 23:13 #11
int[] a1 = { 1,3,5,7,29,11,10,4,8,13 };

er array med angivne værdier

int[] a12 = new int[a1.length + a2.length];

er er array uden angivne værdier (og er derfor 0)
Avatar billede tinaw25 Nybegynder
11. april 2014 - 22:54 #12
Hejsa,

Undskyld at jeg svare på denne tråd. Men jeg tænker om Arne gad og uddybe denne her?

while(ix1 < a1.length) {
            a12x[nx] = a1[ix1];
            nx++;
            ix1++;
}


Hvorfor er det at du har fields som nx og ix1 sat til 0?? Er det for at man ikke ved hvor meget array skal fyldes op med at man sætter 0?  og det array der hedder a1 har allerede nogle værdier så det skal bare smides ned i det nye array?

Og sat dem til ++ i while løkken??

Håber du gider
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
Kategori
Kurser inden for grundlæggende programmering

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