Java schleife beenden??

  • Hallo Leute,

    Vielleicht kann mir irgendjemand bei diesem Problem helfen.


    Ich schrieb das nachfolgende Java Programm, und schaffe es nicht die Anweisung[indent]==> number=In.readInt()[/indent]zu beenden.

    public class Ue_04_06_ZahlenStatistik {


    [indent]public static void main(String[] args) {[indent]int min = 2147483647; //the greatest minimum
    int max = -2147483648; //the slightest maximum
    int counter=0; //count the number of different entries
    int sum=0; //sum of all entries

    Out.println("Enter numerical order:"); //Out print for on screen data
    //In.open(Input.txt); //read from a file


    while (In.done()){ //gegin of a new[indent]boolean first=true; //for begin of the out print

    int number=In.readInt(); //the given numbers


    if (number==0)[indent]Out.println("No Entries");


    [/indent]else{


    [indent]while (In.done()){ //for all entries in the given number


    [/indent][indent][indent]if (first) {first=false;Out.print("{");} //the first out print

    else Out.print(",");

    Out.print(number);

    if (max<number)max=number; //calculate the maximum of all entries


    else[indent]if (min>number)min=number; //calculate the minimum of all entries


    [/indent][/indent][/indent][indent][indent]

    sum += number; //calculate the sum of all entries counter++; //calculate the number of different entries
    [/indent][/indent]==> number=In.readInt();

    [indent]} 
    //In.close();
    [/indent][indent]

    Out.println("}");
    Out.println("Counts="+counter);
    Out.println("Max="+max+" Min="+min+" Mean value=" +sum / counter);
    Out.println();

    [/indent]}

    Out.println("Enter numerical order:"); //Out print for on screen data


    [/indent]}[/indent]} [/indent]}


    Der eingegebene Stream z.B. 33 56 987 48736 2 sollte eingelesen, die größte und die kleinste Zahl eruiert und ausgegeben und der mittlere Wert aller eingelesenen Zahlen ausgegeben werden.
    Weiters möchte nach Beendigung des Durchlaufes sofort wieder eine Eingabeaufforderung erhalten um einen neuen Stream einzulesen.

    Das Programm beendet den Lesevorgang nicht und wartet auf weitere Eingaben.
    Wie kann ich das lösen?

    !!Ich verwende eigene IO classen, welche auf den Originalen IO classen aufgebaut sind, die Programmierung sollte stimmen!!

    erhältlich unter http://www.ssw.uni-linz.ac.at/Misc/JavaBuch/#InOut

    Danke im Voraus.

  • Liest du die Eingabe von Tastatur, oder aus einer Datei? wenn du nämlich von der Tastatur liest, wird das IN.done() niemlas

    Code
    false

    werden, da es auf das EOF(End of file) wartet, und das wirst du beim tastaturstream nie erreichen.

  • Das heißt, dass es keine Möglichkeit gibt dem Programm zu sagen:[indent]Lies den Datenstrom der Tastatur bis keine weiteren Einträge mehr da sind.


    [/indent]oder[indent]Lies den Datenstrom solange bis eine "einzugebende" Abbruchbedingung erfüllt wird.


    [/indent]???


    Wie kann man es dann erreichen, dass überhaupt ein Datenstrom von der Tastatur als fertige Eingabe erkannt wird?
    Das Problem ist dass ich das Programm testen muss, aber ohne Abbruchbedingung des Datenstroms kann es nie fertiggestellt werden.
    Das Einlesen aus einer Datei kann ich noch nicht, da ich noch nicht weiß wie man dem Datenstream sagt welchen Wert er jetzt zu lesen hat (1 od 2 od 3 ...), und wie diese als getrennte Einträge erkannt bzw. deffiniert werden.
    [indent]z.B.:Input.txt
    [indent]1; 12345
    2; 6789
    3; 43
    4; text1
    5;
    6; text2
    7; mein 1. Tag
    8; 30 Sekunden
    [/indent][/indent]


    Ich arbeite mit Win 2K in der aktuellen Eclipse IDE.
    Commandline XP???

Jetzt mitmachen!

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