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
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. TomTom2

Beiträge von TomTom2

  • Methoden anlegen

    • TomTom2
    • 13. November 2007 um 14:00

    Hallo zusammen!

    Wir haben heute mit Methoden begonnen und nun wollte ich das letzte Programm- es las Zahlen in einen Array ein und hat diesen dann später per Schleife nach der größten und kleinsten Zahl ducrhsucht und diese dann ausgegeben- umschreiben.

    Das alte Programm sah so aus:

    Java
    import java.util.Scanner;
    
    
    class Werte {
    
    
        public static void main(String[] args) {
    
    
            // Vorbereitung 
            System.out.println("Eingabe von Zahlen, beenden durch eine nicht numerischen Eingabe");
            double z[] = new double[8];
            int n = 0; 
            Scanner s = new Scanner(System.in);
            while (n < z.length && s.hasNextDouble()) {
                z[n++] = s.nextDouble();
            }
            // Abschluß
            System.out.println("\nEinlesen beendet nach " + n
                    + " Eingabezahl" + (n == 1 ? "" : "en") + "\n");
            if (!s.hasNextDouble())
                System.exit(0);
    
    
            //Hauptteil
            int min = 0, max = 0;
            for (int i = 1; i < n; i++) {
                if (z[i] < z[min])
                    min = i;
                if (z[i] > z[max])
                    max = i;
            }
    
    
            // Abschluß
            System.out.println("\nDie kleinste Zahl ist: "  
                    + z[min]
                    + "\nDie groesste Zahl ist:"
                    + z[max];
        }
    }
    Alles anzeigen

    Nun habe ich versucht zwei Methoden zu schreiben, die den kleinsten und größten Wert übergeben, so dass der Hauptteil wegfällt. Diese habe ich in einer Klasse Wertemethoden gespeichert. Die dazugehörige andere Klasse lautet nur Werte und sieht folgendermaßen aus:


    Code
    Class Werte {
    
    
        public static void main(String[] args) {
    
    
            // Vorbereitung 
            System.out.println("Eingabe von Zahlen, beenden durch eine nicht numerischen Eingabe");
            double z[] = new double[8];
            int n = 0; 
            java.util.Scanner s = new java.util.Scanner(System.in);
            while (n < z.length && s.hasNextDouble()) {
                z[n++] = s.nextDouble();
            }
            // Abschluß
            System.out.println("\nEinlesen beendet nach " + n
                    + " Eingabezahl" + (n == 1 ? "" : "en") + "\n");
            if (n == 0)
                System.exit(0);
    
    
            // Abschluß
            System.out.println("\nDie kleinste Zahl ist: "  
                    + Wertemethoden.min
                    + "\nDie groesste Zahl ist:"
                    + Wertemethoden.max);
        }
    }
    Alles anzeigen
    Code
    class Wertemethoden {
    
    
    static double Wertemin {double min (int z, int n) {
        int min = 0;
        for (int i = 1; i < n; i++) {
            if (z[i] < z[min])
                min = i;
            return min;
            }
        }
    }
    
    static double Wertemax {double max(int z, int n) {
        int max = 0;
        for (int i = 1; i < n; i++) {
            if (z[i] > z[max])
                max = i;
            return max;
            }
        }
    }
    }
    Alles anzeigen

    Nun bekomme ich im Methoden- Teil immer eine Fehlermeldung betreffend die beiden double bei static double Wertemin bzw. Wertemax. Was genau will er mir mit dieser Fehlermeldung mitteilen?

    Syntax error on token "double", class expected

    Zudem meckert er in der Hauptklasse Werte, dass

    Wertemethoden.min cannot be resolved.

    Muss ich irgendwie eine weitere Referenz auf die Klasse Wertemethoden einbauen? Und wie sieht so ein Verweis aus? Ich dachte, es würde genügen, den direkten Verweis erst im Ausgabeteil anzusprechen.

    Ich danke für die Hilfe,
    Tom

  • Array einlesen und ausgeben

    • TomTom2
    • 7. November 2007 um 14:41

    Hallo Reinhard!

    Nein, danke für den Vorschlag, aber ich möchte ja selber etwas klüger werden :)

    Ich habe nun nochmals etwas an dem Code herumgebastelt, damit dieser die Zahlen einliest. Fehlermeldungen gibt es keine mehr- immerhin etwas :thumb:
    Der neue Code sieht nun so aus:

    Java
    import java.util.Scanner;
    
    
    public class Test {
        public static void main(String[] args) {
    
    
            // Einleseteil
            Scanner s = new Scanner(System.in);  
            System.out.print("\nBitte geben Sie beliebige Zahlen ein."
                        + "\nEingabeende erfolgt durch nicht numerische Eingabe oder nach der Eingabe der 8. Zahl.");
            if (!s.hasNextDouble())
                System.exit(0);
            double[] Zahleneingabe = new double[8];
            double groessteZahl, kleinsteZahl;
            kleinsteZahl = groessteZahl = Zahleneingabe[0];
            int index=0;
            while (s.hasNextDouble()){
                Zahleneingabe[index]=s.nextDouble();
                index++;
                if ( index>=8)
                    break;
            }
          System.out.println("\nEs wurden " +  index  + " Zahlen eingegeben.");
    
    
            //Ausgabeteil
            for (int i=0; i <Zahleneingabe.length; i++) {
                if (groessteZahl>Zahleneingabe[i])
                    groessteZahl = Zahleneingabe[i];
                if (kleinsteZahl<Zahleneingabe[i])
                    kleinsteZahl = Zahleneingabe[i];
            } 
            System.out.println("\nDie kleinste eingegebene Zahl ist: " + kleinsteZahl + "\nDie groesste eingegebene Zahl ist: " + groessteZahl);
        }
    }
    Alles anzeigen

    So, soweit klappt alles- bis auf einenkleinen Fehler bzw. Frage.


    Es findet kein Abbruch statt, wenn die 8. Zahl eingegeben wurde. Wie kann ich dies bewerkstelligen? Ich dachte, mit der if- Referenz

    Code
    if ( index>=8)
                    break;

    hätte ich dies gelöst.

    Danke schon einmal für die Hilfe,
    Tom

  • Array einlesen und ausgeben

    • TomTom2
    • 7. November 2007 um 10:52

    Hallo zusammen!

    Ich sitze gerade an einer Aufgabe und komme irgendwie nicht weiter ( bin Java- Neuling und zweifel etwas an mir selber- momentan erscheint mir Java noch wie ein Buch mit sieben Siegeln ). Es soll ein Array von 8 Zeichen eingelesen werden- diese werden über die Tastatur eingegeben- und dann abgespeichert. Nach der Eingabe erfolgt die Verarbeitung und die Suche nach der größten, kleinsten Zahl mit Ausgabe dieser beiden Zahlen am Ende des Programms.Der Code ist Folgender:

    Java
    import java.util.Scanner;public class Arraytest{    public static void main(String[] args) {        // Einleseteil        Scanner s = new Scanner(System.in);          System.out.print("\nBitte geben Sie beliebige Zahlen ein."                      + "\nEingabeende erfolgt durch nicht numerische Eingabe oder nach der Eingabe der 8.Zahl.");        if (!s.hasNextDouble())            System.exit(0);        double[] Zahleneingabe = new double[8];        double groessteZahl, kleinsteZahl;        int i;        kleinsteZahl = groessteZahl = Zahleneingabe[0];        System.out.println("\nEs wurden" + Zahleneingabe + "Zahlen eingegeben.");        //Ausgabeteil        for (int i=1; i<Zahleneingabe; i++) {            if (groessteZahl>Zahleneingabe[i])                groessteZahl = Zahleneingabe[i];            if (kleinsteZahl<Zahleneingabe[i])                kleinsteZahl = Zahleneingabe[i];        }        i++;        }        System.out.println("\nDie kleinste eingegebene Zahl ist: " + kleinsteZahl + "\nDie groesste eingegebene Zahl ist: " + groessteZahl);    }

    So, nun muss ich eine noch eine Abbruchbedingung einarbeiten, dass automatisch der Einleseteil beendet wird, wenn die 8. Zahl eingelesen wird. Wie erzeuge ich so eine Bedingung? In Zeile 12/13 habe ich dies ja bereits für den Fall getan, dass gar nichts eingegeben wird.

    Des Weiteren bekomme ich immer einige Fehlermeldungen und kann mit diesen wenig anfangen:

    - Duplicate local variable i line 22
    - The operator < is undefined for the argument type(s) int, double[] line 22
    - Syntax error on token "println", = expected after this token line 30
    - Syntax error on token(s), misplaced construct(s) line 30

    Vielleicht könnte mir da jemand weiterhelfen- irgendwie sehe ich den Wald vor lauter Bäumen nicht mehr und weiß gerade nicht, wo meine Fehler liegen.

    Danke schön.
    Tom

Rechtliches

Impressum

Datenschutzerklärung