Announcement

Collapse
No announcement yet.

Hilfe mit einfachem Algorithmus!!!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe mit einfachem Algorithmus!!!

    Hi!<br>

    Ich versuche einige einfache Sortieralgorithmen in Java zu schreiben, also ein einfaches Programm, das von der Konsole Zahlen einliest und diese dann sortiert, Probleme habe ich vor allem beim richtigen Einlesen únd übergeben der Argumente, hier mein Code für einen Insertion Sort:<br><br>

    import java.io.*;<br>
    import java.util.*;<br>
    <br>
    class InsertionSort{<br>
    public static void main(Comparable[] a){<br>
    if(a.length>0){<br>
    for(int i=0; i<a.length; i++){<br>
    System.out.println(sort(a[i]));<br>
    <br>
    }<br>
    }<br>
    else{<br>
    BufferedReader in = new BufferedReader(new InputStreamReader<br>(System.in));<br>
    System.out.println("Enter ints to sort them, enter \"exit\" to quit");<br>
    }<br>
    try{<br>
    while(true){<br>
    String num = in.readLine();<br>
    if(num.equals("exit"))<br>
    break;<br>
    }<br>
    }catch(IOException e){System.out.println("Could not read");}<br>
    }<br>
    <br>
    public static void sort(Comparable[] a){<br>
    int j;<br>
    for(int p=1; args.length; p++){<br>
    Compareable tmp = a[p];<br>
    for(int j = p; j>0 && tmp.compareTo(a[j-1])<0;j--){<br>
    a[j]= a[j-1];<br>
    a[j]=tmp;<br>
    }<br>
    }<br>
    }<br>
    }<br><br>

    Das Problem liegt eindeutig bei den falschen Argumenten, mit Comparable und String[] args, ich weiß nicht ob ich Comparable überhaupt brauche, oder ob ich das ganze als String[] args einlesen kann, Danke im Voraus!!<br>
    <br>
    Gruß Othmar

  • #2
    Hallo,<br>

    die main() Methode benötigt immer 'String[] args' als Parameter. Also
    diese irgendwie in Deine gewünschten Werte überführen. Comparable
    muss nur für Klassen implementiert werden, welche selber noch nicht
    sortierbar sind (also Comparable nicht implementieren). Nachfolgend
    mal der funktionsfähige Quelltext. Anstelle Arrays.sort() und
    Collections.sort() kannst Du die gewünschten Algorithmen setzen.
    <br>
    <pre>
    package com.test;

    import java.io.*;
    import java.util.*;

    public class SortMain
    {
    public static void main(String[] a) {
    if(a.length > 0) {
    Integer iArray[] = new Integer[a.length];
    for(int i=0; i < a.length; i++) iArray[i] = Integer.valueOf(a[i]);
    Arrays.sort(iArray);
    for(int i=0; i < iArray.length; i++) System.out.println(iArray[i]);
    }
    else {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter ints to sort them, enter \"exit\" to quit");

    try {
    List al = new ArrayList();

    while(true) {
    String num = in.readLine();
    if(num.equals("exit")) break;
    al.add(Integer.valueOf(num));
    }

    Collections.sort(al);
    for(int i=0; i < al.size(); i++) System.out.println(al.get(i));
    }
    catch(IOException e){System.out.println("Could not read");}
    }
    }
    }
    </pre>
    <br>
    Eine gute Doku findet man auch unter der JDK Hilfe zum Collections API.
    <br>
    Viele Grüße,<br>
    Andrea

    Comment

    Working...
    X