• 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!!

  • 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 ;)
    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

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

    There's no better place than 127.0.0.1!

  • 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];
    }
  • 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>

  • 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 ;)

    There's no better place than 127.0.0.1!

  • 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.

  • 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!

  • 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!

  • 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

  • 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:

Jetzt mitmachen!

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