Operator cannot be applied to....

  • Programm ist natürlich noch nicht fertig. Aber ich kanns ned komplieren.
    Weil er mir immer die Fehlermeldung Operator "<" cannot be applied to java.util.scanner.

    Hab ich da irgendwas entscheidendes vergessen?

  • Du versuchst, Referenzen auf Scanner zu vergleichen, das kann net gehen. Du musst die Eingaben in verschiedenen Variablen speichern und diese dann vergleichen. Scanner brauchst dafür nur einen

    Code
    Scanner s = new Scanner(System.in);
    int a,b,c;
    a = s.nextInt();
    b = s.nextInt();
    c = s.nextInt();

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Sodala jetzt hab ich das ganze bisel überarbeitet. Funktioniert jetzt auch.

    Nur gibt er mir jetzt immer a b und c aus. Dabei will ich ja nur einen einzigen Wert nämlich den Mittelwert.
    Jemand nur einen kleinen Tipp, damit ich in die richtige Richtung zu denken beginne?

  • Naja wenn a < b ist und b < c ist, dann ist a < c immer wahr.
    Und in diesem Fall ist c auch nicht der Median.

    lg Stefan

    P.S.: Ich hab das ganze sehr sehr sehr simpel aber schön gelöst, mal schauen was die Tutoren (oder wer auch immer das ganze bewertet) zu dieser Lösung sagen:

  • Ist klar das das kompliziert ist.
    Du musst dir halt einfach mathematisch aufschreiben wie du mit möglichst wenig Vergleichen die 2t größte rausfindest.

    Andere Lösung wäre:
    Kennst du dich mit Arrays aus? Da brauchst du kein a, b, c mehr und kannst eine n Algorithmus erstellen der dir die 2t größte Zahl des Arrays raussucht. Bei 3 Zahlen ist das dann der Median. Dieser Algorithmus kann dann auch für beliebig große Arrays verwendet werden.
    Ansonsten Kurzerklärung:

    Ein Array ist sozusagen eine 2dimensionale Variable.
    z.B. erzeugst du es mit int[] zahlen = new int[3]; erzeugt dir ein Array mit 3 Feldern (statt a, b und c).
    Zugreifen tust du dann darauf mit zahlen[0], zahlen[1] und zahlen[2]

    So und jetzt kannst du mit einer Schleife dieses Array durchlaufen und die größte und gleichzeitig die 2t größte Zahl suchen.

    lg Stefan

  • Nein kenne mich noch nicht mit Arrays aus.
    Habs mir anhand deines Bsps angeschaut wie das mit Arrays funktioniert und ist für mich logisch. Danke.

    Möchte das Programm trotzdem noch irgendwie, auf meine Weise fertig bekommen ;P

  • Code
    if ( a < b )
                if ( b < c )
                System.out.print("Der Median lautet: " +b);
                    if ( a < c )
                    System.out.print("Der Median lautet: " +c);
                    else 
                    System.out.print("Der Median lautet: " +a);

    Nur gibt er mir jetzt immer a b und c aus.


    Geschwungene Klammern könnten helfen. Insbesondere ist if (a < c) hier nicht im Bereich des "äußeren" if (a < b).

    Code
    if (bedingung)
        foo();
        bar();


    bedeutet trotz Einrückung (die interessiert den Java-Compiler nicht)

    Code
    if (bedingung)
    {
        foo();
    }
    bar();


    und nicht

    Code
    if (bedingung)
    {
        foo();
        bar();
    }

    *plantsch*

Jetzt mitmachen!

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