Array einlesen und ausgeben

  • 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

  • Ich weiß jetzt nicht wo ich anfangen soll. Also zum einen ist dir klar, dass dein Code momentan keine einzige Zahl einließt? Im Code selber musst du dich auch nicht drum kümmern wann die Eingabe beendet wird. Man muss dem Programm "persönlich" sagen wann die Eingabe beendet ist. Und das macht man, wenn man strg+c/z in der Eingabeaufforderung drückt. Natürlich könnte man den Code so schreiben, dass er darauf wartet, dass 8 Double Werte eingegeben wird, danach die größte/kleine Zahl ausgibt und sich beendet, aber das ist nicht wirklich notwendig.

    Wenn du willst könnte ich dir den Code komplett schreiben, aber dabei würdest du nichts (kaum etwas) lernen ... aber über ein Forum ist es recht schwierig das Programmierverständnis zu übermitteln ...

    So, mal zu deinen konkreten Fehlern:
    1) "Duplicate local variable i": bedeutet nichts anderes, als dass du 2x im Code "int i" schreibst. Wenn einmal definiert wurde, dass i ein int ist, dann kann man das nicht mehr ändern, daher darf man i nicht 2x als int definieren.
    2) "The operator < is undefined for the argument type(s) int, double[]": sagt auch schon alles. Du willst ein int mit einem Double-Array vergleichen. Man kann ja auch nicht Äpfel mit Birnen vergleichen. Was du haben wolltest ist: "i<Zahleneingabe.length"
    3&4) Haben den Error im selben Ursprung. Du hast die geschwungenen Klammern falsch gesetzt.


    Hoffe damit kommst du wieder einen Schritt weiter. Und immer genau die Error-Meldungen lesen. Das hilft.


    Lg,
    Reinhard

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

    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

  • Zitat

    Es findet kein Abbruch statt, wenn die 8. Zahl eingegeben wurde.


    Ich habe bei mir deinen Code compiliert und getestet. Bei mir hats geklappt, dass er nach der 8ten Zahl sich das Prog. selbst beendet hat.
    Meine Eingabe sah so aus (Zahl + Enter)*8

    Lg,
    Reinhard

Jetzt mitmachen!

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