1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Arrays

  • caesarju
  • 10. März 2006 um 21:13
  • Unerledigt
  • caesarju
    4
    caesarju
    Mitglied
    Punkte
    115
    Beiträge
    17
    • 10. März 2006 um 21:13
    • #1

    salve,

    hab ein großes problem, muss aus einem bestehenden array die zwei größten und kleinsten zahlen herauslöschen! das finden dieser zahlen is noch nicht das problem, nur wie kann ich nun dieses array mit dem neuen array (ohne die herausgefilterten sachen) verknüpfen? am schluss sollte ein neues array ohne diese zahlen entstehen!

    hab es mit zwe for schleifen probiert nur leider funkt das nicht!!

    Code
    for(int i = 0; i<a.length; i++){
    
    	if (a[i] != min && a[i]!= max){
    
    
    		for(int x= 0; x<b.length; x++){
    
    			b[x]=a[i];
    			break;
    			//System.out.print(b[x]);
    
    
    		}
    
    
    	}
    
    
    
    
    }
    
    
    for(int i=0; i<b.length; i++){
    	System.out.print(b[i]);
    
    }
    Alles anzeigen
  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 10. März 2006 um 21:35
    • #2

    Also...
    1.) Musst du das mit einem Array machen? Wenn nicht, dann schau dir einmal die Klasse java.util.ArrayList an, die macht das Ganze um einiges einfacher :winking_face:
    2.) Du musst dir einfach den Index der größten und kleinsten Zahl merken und dann darfst du diesen Index nicht hinüberkopieren...ist eine Spielerei, ich machs dir schnell:P

    Code
    int[] a = new int[length]; //beliebige Länge
    int min = a[0];
    int minindex = 0;
    for(int i = 1; i < a.length; i++){[INDENT]if(a[i] < min){[INDENT]min = a[i];
    minindex = i;[/INDENT]}[/INDENT]}
    int max = a[0];
    int max = 0;
    for(int i = 1; i < a.length; i++){[INDENT]if(a[i] > max){[INDENT]max = a[i];
    maxindex = i;[/INDENT]}[/INDENT]}
    int[] b = new int[a.length-2];
    int j = 0;
    for(int i = 0; i < a.length; i ++){[INDENT]if((i!=minindex)&&(i!=maxindex)){[INDENT]b[j] = a[i];
    j++;[/INDENT]}[/INDENT]}
    Alles anzeigen

    So hab improvisiert aber das müsste gehen.
    Lg.
    java-girl

    There's no better place than 127.0.0.1!

  • Paulchen
    1
    Paulchen
    Gast
    • 11. März 2006 um 12:44
    • #3

    wenn das array sortiert werden darf, gehts imho viel einfacher:

    Code
    Arrays.sort(intArray);
    int[] newArray=new int[Math.max(0, intArray.length-4)];
    for(int a=2;a<intArray.length-2;a++) {
        newArray[a-2]=intArray[a];
    }
  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 11. März 2006 um 14:35
    • #4

    Wenn die Reihenfolge erhalten bleiben muss, wird es leider etwas umstaendlicher:
    z.b.

    Code
    Integer[] arr = new Integer[]{3,1,4,5,7,6};    
        List<Integer> list = new ArrayList<Integer>(Arrays.asList(arr));
        list.remove(Collections.min(list));
        list.remove(Collections.min(list));
        list.remove(Collections.max(list));
        list.remove(Collections.max(list));
        arr = list.toArray(new Integer[0]);

    Im Gegensatz zur java-girls Loesung wird da intern viel herumkopiert. Auf der anderen Seite ist die Loesung aber abstrakter und daher besser lesbar.

    <lobbyarbeit>
    Btw, In Ruby wuerde man das vermutlich mengenorientiert loesen:

    Code
    list = list & list.sort[2...-2]


    </lobbyarbeit>

    lg, Benjamin Ferrari, bookworm.at

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 11. März 2006 um 14:46
    • #5

    Meine Lösung ist als eher primitiv anzusehen, da man dazu keinerlei Kenntnisse über die JAVA Library benötigt. Solche Programme hab ich vor zwei Jahren schreiben müssen als wir mit Arrays anfingen :winking_face:

    There's no better place than 127.0.0.1!

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 11. März 2006 um 15:42
    • #6
    Zitat von java-girl

    Meine Lösung ist als eher primitiv anzusehen

    Deine Loesung ist aber nicht schlechter als meine.
    Bei meinem code wird das gesamte array insgesamt 6 x durchlaufen, das ist halt nicht unbedingt performant. Mit deiner loesung wuerde es mit drei Durchlaufen gehen.
    Was wirklich vernuepftig waehre, haengt wohl davon ab, wieviele elemente in dem array drinnen sind.

    lg, Benjamin Ferrari, bookworm.at

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 11. März 2006 um 15:53
    • #7

    :grinning_squinting_face:
    Es kommt vor allem darauf an, für was das Ganze benötigt wird :winking_face:

    There's no better place than 127.0.0.1!

  • caesarju
    4
    caesarju
    Mitglied
    Punkte
    115
    Beiträge
    17
    • 18. März 2006 um 17:05
    • #8

    salve,

    danke für die zahlreichen tipps, kann aber nur das einfachste umsetzen da ich erst seit einem halben jahr java lerne!!

    hätte da noch eine frage an euch? wie müsste ich es machen, dass ich aus einem array beliebig viele maximal bzw minimalwerte herauslesen kann? wenn der benutzer die zahl der zu streichenden mins/max eingibt?

    bitte wenn möglich so einfach wie möglich! danke für die mühe!

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 18. März 2006 um 17:12
    • #9

    Ich würde es so machen:

    Das Array hat n Zahlen.
    Der Benutzer möchte m Minima bzw. Maxima herausstreichen.
    Zuerst das Array sortieren, dann ein neues erstellen das m-n groß ist und dann einfach die letzten bzw. ersten Zahlen hineinkopieren.

    There's no better place than 127.0.0.1!

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 18. März 2006 um 17:26
    • #10
    Zitat von caesarju

    wie müsste ich es machen, dass ich aus einem array beliebig viele maximal bzw minimalwerte herauslesen kann?

    Das selbe was du tust, um einen einzigen maximal/minimalwert zu bekommen. Nur halt n mal. :)

    Code
    //java:
    int[] maximalwerte = new int[anzahlDerMaximalwerte];
    //pseudocode:
    for(i=0;...){
     max = hole naechsten maximalwert
     maximalwerte[i] = max
    }

    lg, ben

    lg, Benjamin Ferrari, bookworm.at

  • caesarju
    4
    caesarju
    Mitglied
    Punkte
    115
    Beiträge
    17
    • 18. März 2006 um 22:16
    • #11
    Zitat von java-girl

    Ich würde es so machen:

    Das Array hat n Zahlen.
    Der Benutzer möchte m Minima bzw. Maxima herausstreichen.
    Zuerst das Array sortieren, dann ein neues erstellen das m-n groß ist und dann einfach die letzten bzw. ersten Zahlen hineinkopieren.


    salve, vielen, vielen dank für deine tipps, jetzt funkts, war gar nicht so schwer! hast mir einen haufen nervenaufreibender studen erspart! vielen dank!
    :thumb: :thumb: :thumb:

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung