Die aufgabe lautet, dass ich ein Programm erstelle das von einer Beliebigen zahl anfängt hoch zu zählen.
Das ist ja kein Problem. Jedoch soll , wenn ich die zahl 0 eingebe , alles gestopt bzw beendet werden.
Und zum schluss soll ein durschnittswert ausgegeben werden.
Nur ich kriege das mit der 0 nicht hin.
Könnt ihr mir ein paar Tipps geben wie ich diese sachen angehen kann, bin echt am verzweifeln....
Gruß
DGaz
edit:
Java:
importjava.util.Scanner;/**
*
* Beschreibung
*
* @version 1.0 vom 23.02.2011
* @author
*/publicclassAbbruch{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);System.out.println("Welche Zahl soll addiert werden");int i;for(i=sc.nextInt(); i <10; i++){System.out.println(i);}}}
Ich nehme mal an, dass du via Console eine Zahl vom Benutzer einliest und dann hochzählst. Wenn du das bereits hast, verstehe ich dein Problem nicht. Eine einfache Überprüfung der Eingabe (in dem Fall = 0) würde doch schon ausreichen.
genau soweit bin ich ja, das hochzählen habe ich.
Aber wie bekomme ich das hin , dass wenn ich 0 drück schluss ist ?
weil wenn ich erst hochzählen lasse kann ich doch nicht 0 eingeben, erst wenn das hochzählen fertig ist kann ich doch etwas eingeben oder leige ich falsch ?
genau soweit bin ich ja, das hochzählen habe ich.
Aber wie bekomme ich das hin , dass wenn ich 0 drück schluss ist ?
weil wenn ich erst hochzählen lasse kann ich doch nicht 0 eingeben, erst wenn das hochzählen fertig ist kann ich doch etwas eingeben oder leige ich falsch ?
Nun soweit ich weiß, wirst du schon warten müssen, bis das hochzählen fertig ist.
Wenn ich deinen Quelltext sehe, zählt er bis 10 und beendet, dann das Programm?
Und warum schreibst du "addieren"? Hochzählen und addieren sind zwei verschiedene Dinge (nicht bös gemeint)
Kann es sein, dass man laut der Aufgabenstellung immer wieder eine Zahl eingeben können soll, nachdem er hochgezähöt hat? Oder wirklich nur einmal und dann das Programm von alleine beenden?
dort steht "....solange addiert werden bis der Benutzer den Wert 0 eingibt..."
aber gemeint ist hochzählen.... aussage von meinem Lehrer
@chalkbag
ich glaub du hast mich miss verstanden, also das Programm soll hochzählen... egal was ich am anfang eingeben.
Es soll nur sobald ich 0 drücke mit dem hochzählen aufhören...
Wie man gleichzeitig schreiben und lesen will, versteh ich immer noch nicht ganz. Zumal man ja mit Enter bestätigen müsste und während geschrieben wird, wird die Eingabe ja schon wieder überschrieben.
Hab mal was gefunden, vll kannste dirs ja mal anschauen wie die das gelöst haben und dann etwas ähnliches selbst realieren - sollte ja kein Hexenwerk sein: Java: Keylistener auf Konsolenebene / crusy.net
genau, nur ich weiß echt nicht wie ich das umsetzen soll, habe so etwas noch nie gemacht.
eine frage, kann man das hochzählen nicht im hintergrund laufen lassen ????
so das man ein aktives eingabe fenster hat wo mann jeder zeit die 0 eingeben kann, aber gleichzeitig hochgezählt wird ?
Das Problem hast du ja auch bei einen üblichen Consolen-Chat, wie ihn viele schon programmiert haben. Während du etwas schreibst, kann ja ein anderer Teilnehmer schon etwas geschrieben haben.
Synchronisation ist dann natürlich noch ein Thema.
Du könntest in einem Thread hochzählen, aber es einfach nicht anzeigen lassen. Wenn du [c]0[/c] eingibst, wird der thread beendet und das Ergebnis ausgegeben.
genau, nur ich weiß echt nicht wie ich das umsetzen soll, habe so etwas noch nie gemacht.
eine frage, kann man das hochzählen nicht im hintergrund laufen lassen ????
so das man ein aktives eingabe fenster hat wo mann jeder zeit die 0 eingeben kann, aber gleichzeitig hochgezählt wird ?
Ich weiß jetzt nicht wie dein Wissensstand ist, aber Threads kennst du?
Erstell zwei Klassen welchen Runnable implementieren. In der run Methode definierst du was die 2 Threads jeweils machen sollen. Gestartet wird dann über .start().
Zusäztlich müsstest du ja Thread 1 noch sagen, wann schluss ist. Dies kannst du über eine setMethode mit entsprechender Schalter-Variable erledigen, welche du vor jedem System.out kontrollierst. Für echte Synchronisation müsstest du die Console synchronisieren und evtl. mit mutexen arbeiten (oder ein anderes object per synchronise befehl sperren).
Wie gesagt weiß nicht wie weit du bist, und kann so schwer sagen wie genau dieses Problem gelösst werden soll.
Es ist wohl eher gefordert, dass der Benutzer dazu aufgefordert werden soll Zahlen einzugeben.
Wenn er eine 0 eintippt sollen die eingegebenen Zahlen ausgewertet werden, indem deren Durchschnitt errechnet wird.
Dafür braucht man natürlich die Summe und die Anzahl an Zahlen.
Es soll also nicht bei einer Eingabe von 3 auf 3 hochgezählt werden, sondern summe + 3 gerechnet werden.
das klappt irg wie nicht hab das jetzt bisschen umgeändert, weil wenn ich das so ausführe dann zählt der mir nur wie viele zahlen ich dort eingegeben habe, also es fängt erst garnicht an hoch zu zählen, obwohl es ja eig sollte weil :
soo habe eine email von meinem Lehrer bekommen, in dem steht das er es genau so meint wie es Sonecc erklärt hat....-.-
wir saßen mit freunden echt lange drann und haben es nicht hingekriegt.... naja dann fang ich halt von vorne an..
funktionieren tut es schon, deine Aufgabenstellung ist nur nicht ganz klar :-/. Aber letztendlich egal ich wollte dir nur den Weg zeigen und das Thema weg von den Threads lenken, lösen musst du es selber
Ich addiere einfach einen Wert und lasse danach die nächste Zahl einlesen. Du kannst das auch umgekehrt machen, wenn es deiner Aufgabenstellung hilft: erst die Zahl einlasen und dann drauf addieren.
hmm kk danke,
jetzt muss ich nur noch gucken wo die eingabe hingeht um diese zu addieren.
weil next ist es ja nicht.
Wie kann ich die ergebnisse anzeigen lassen, um eine summe daraus zu bilden ?
Ergebnisse? Meinst du damit die Werte die dazu addiert werden? Die hast du schon darstehen, weil Sie der Benutzer ja eingeben musste. Ansonsten verwende doch hier einfach Scanner (Java 2 Platform SE 5.0) - nextInt.