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

Operator cannot be applied to....

  • Krackmoe
  • 18. Oktober 2007 um 14:24
  • Unerledigt
  • Krackmoe
    5
    Krackmoe
    Mitglied
    Punkte
    260
    Beiträge
    36
    • 18. Oktober 2007 um 14:24
    • #1
    Java
    import java.util.*;
    
    
    public class median
    { 
    
    
        public static void main (String[] args) 
        { 
            int x1;
            int x2;
            int x3;
            int median;
            int zahleingeben;
            Scanner a = new Scanner (System.in);
            Scanner b = new Scanner (System.in);
            Scanner c = new Scanner (System.in);
    
            System.out.print("Geben sie Zahl 1 ein: ");
                zahleingeben = a.nextInt();
                System.out.println();
            System.out.print("Geben sie Zahl 2 ein: ");
                zahleingeben = b.nextInt();
               System.out.println();
            System.out.print("Geben sie Zahl 3 ein: ");
                zahleingeben = c.nextInt();
                System.out.println();
    
            if ( a < b)
                {
                if ( b < c )
                    System.out.print(b);
                    if ( a < c)
                        System.out.print(c);
                    else 
                        System.out.print(a);
                }
    
               } 
    }
    Alles anzeigen

    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?

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 18. Oktober 2007 um 14:38
    • #2

    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!

  • Krackmoe
    5
    Krackmoe
    Mitglied
    Punkte
    260
    Beiträge
    36
    • 18. Oktober 2007 um 15:06
    • #3

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

    Java
    import java.util.*;
    
    
    public class median
    { 
    
    
        public static void main (String[] args) 
        { 
            int a,b,c;
            Scanner s = new Scanner (System.in);
    
            System.out.print("Geben sie Zahl 1 ein: ");
                a = s.nextInt();
            System.out.print("Geben sie Zahl 2 ein: ");
                b = s.nextInt();        
            System.out.print("Geben sie Zahl 3 ein: ");
                c = s.nextInt();
    
            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);
    
    
            if  ( b < c ) 
                if ( a < c )
                System.out.print("Der Median lautet: " +a);
                else 
                System.out.print("Der Median lautet: " +c);
            else
            System.out.print("Der Median lautet: " +b);
        } 
    }
    Alles anzeigen

    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?

  • Horrendus
    7
    Horrendus
    Mitglied
    Punkte
    520
    Beiträge
    92
    • 18. Oktober 2007 um 15:15
    • #4

    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:

    PHP
    import java.util.Scanner;
    
    
    class median {
    	public static void main(String[] args) {
    		int[] zahlen = new int[3]; //Array für die 3 einzugebenden Zahlen
    		Scanner sc = new Scanner(System.in); //Scanner sc initialisieren
    		System.out.println("Dieses Programm liest 3 Zahlen ein und gibt anschliessend die zweitgroesste Zahl aus.");
    		System.out.println();
    		System.out.print("Bitte die erste Zahl eingeben: ");
    		zahlen[0] = sc.nextInt();
    		System.out.println();
    		System.out.print("Bitte die zweite Zahl eingeben: ");
    		zahlen[1] = sc.nextInt();
    		System.out.println();
    		System.out.print("Bitte die dritte Zahl eingeben: ");
    		zahlen[2] = sc.nextInt();
    		System.out.println();
    		java.util.Arrays.sort(zahlen); //Sortieren des Arrays mithilfe der Sortierfunktion in java.util.Arrays
    		System.out.println("Die zweitgroesste Zahl ist: " + zahlen[1]); //Ausgabe der 2ten Zahl des sortierten Arrays
    	}
    }
    Alles anzeigen
  • Krackmoe
    5
    Krackmoe
    Mitglied
    Punkte
    260
    Beiträge
    36
    • 18. Oktober 2007 um 15:20
    • #5

    Wah mich macht dieses a<b, b<c, c<a ganz crazy :grinning_face_with_smiling_eyes: Ich hab da keinen durchblick mehr :face_with_tongue:

  • Horrendus
    7
    Horrendus
    Mitglied
    Punkte
    520
    Beiträge
    92
    • 18. Oktober 2007 um 15:29
    • #6

    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

  • Krackmoe
    5
    Krackmoe
    Mitglied
    Punkte
    260
    Beiträge
    36
    • 18. Oktober 2007 um 15:31
    • #7

    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

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 18. Oktober 2007 um 17:52
    • #8
    Zitat von Krackmoe
    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*

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    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