Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt?

Wasserranzen

Aktives Mitglied
Hallo,
Ich brauche Hilfe. Ich möchte, dass man von der Zahl 306 solange, vom Nutzer eingegebene Zahlen, abgezogen wird, bis der Wert null erreicht wird.
Meine Versuche waren leider zum scheitern verurteilt und ich weiß nicht wo mein Fehler liegt. Kann mir jemand helfen?
[CODE lang="java" title="Code"]import java.util.Scanner;
public class Test {
public static void main(String []args) {

Scanner x = new Scanner(System.in);
int punkte = x.nextInt();
while (punkte >0) {
punkte= 306 - punkte;
}



}


} [/CODE]
 
Derzeit liest Du nur einmal eine Zahl ein und ziehst die immer ab.

Der erste wichtige Schritt ist also, den Algorithmus erst einmal richtig zu formulieren. Das kann hier also schon sein:
So lange wie die Punktzahl größer 0 ist:
-> Frage Nutzer nach einer Zahl
-> Ziehe die Zahl von Punkte ab.

Der zweite wichtige Punkt ist, den eigenen Code zu verstehen. Wenn es da Probleme gibt, dann bau mehr Ausgabe ein!
 
Selbst, wenn der Nutzer nur _einmal_ eine Zahl eingibt, ist die Berechnung (punkte = 306 - punkte) leider trotzdem falsch, denn diese Zuweisung überschreibt den vom Benutzer eingegebenen Betrag und alterniert dann immer einfach nur zwischen zwei Werten.
Du musst den vom Benutzer eingegebenen Betrag und die zu dekrementierende Zahl (startend bei 306) in zwei verschiedenen Variablen speichern.
 
Meine Dartmaschine ist kaputt gegangen, aber ich wollte trotzdem weiter spielen, deswegen wollte ich so ein Programm schreiben, aber ich scheitere schon an der Syntax.
 
Dann fange doch einfach einmal an, und schreibe auf, was genau die Schritte sind, die getan werden sollen.

Stell Dir dazu vor, dass Du mir sagen sollst, was ich aufschreiben soll. Ich kann Lesen und Schreiben, aber ich kann absolut nichts behalten.
Daher musst du mir immer genau sagen, was ich wie aufschreiben soll. Also ich kann z.B. auf dem Zettel schreiben: Punkte: 100
Dann kannst Du mir sagen: nimm den Wert, der bei Punkte steht, ziehe etwas ab, das woanders steht und das Ergebnis schreibst Du bei Punkte hin. Dabei würde ich aber die 100 streichen und die wären damit weg.

Kannst Du sowas aufschreiben? Punkte von Hand auf dem Zettel verwalten kannst Du ja bestimmt. Daher sollte sowas nicht schwer fallen.
 
Ich hab jetzt eine andere Möglichkeit versucht , aber meine Summenvariable wird immer überschrieben.
Java:
import java.util.Scanner;
public class Test {
public static void main(String []args) {

Scanner x = new Scanner(System.in);
int a []= new int [100];
for( int i = 0 ; i <= a.length; i++) {
a[i] = x.nextInt();
int sum = 306 - a[i];
System.out.println(sum);

  }


}


   }
 
Für die reine Berechnung brauchst du keine Arrays.

Wichtig ist doch, den Ablauf genau zu beschreiben - und das ohne Java. Denn erst, wenn Du den Ablauf im Detail verstanden hast, dann kannst Du es auch umsetzen.

Was ist denn der Ablauf, den Du wünscht (und die Beschreibung, die ich von Dir erwartet hätte!):
- Punkte wird auf einen Startwert (z.B. Deine 306) gesetzt.
- So lange Punkte > 0 ist:
--> Frage nach geworfenem Wert und speichere diese in Wurf.
--> Ist wurf <= Punkte:
----> Ja: Punkte := Punkte - Wurf und gib dann die Punkte aus.
----> Nein: Gib aus: Zu hoher Wurf, Punkte weiter: Punkte

Wenn Du einen Ablauf so geschrieben hast, dann kannst Du den 1:1 in Java schreiben:
- Punkte wird auf einen Startwert (z.B. Deine 306) gesetzt.
==> int punkte = 306;

- So lange Punkte > 0 ist:
==> while (punkte > 0) {

--> Frage nach geworfenem Wert und speichere diese in Wurf.
==> int wurf = frageNachgeworfenemWert();
Hier wird noch eine weitere Methode geschrieben - man will ja ggf. hier etwas mehr machen als ein einfaches nextInt. Aber von mir aus, rufst Du auf dem Scanner einer nextInt() auf.

--> Ist wurf <= Punkte:
==> if (wurf <= punkte) {

----> Ja: Punkte := Punkte - Wurf und gib dann die Punkte aus.
==> punkte = punkte - wurf;
==> System.out.println("neuer Punktestand: " + punkte);

----> Nein: Gib aus: Zu hoher Wurf, Punkte weiter: Punkte
==> else { System.out.println("Zu hoher Wurf, Punkte weiter: " + punkte); }

Bei der Übersetzung sind teilweise keine Blöcke eingebaut - aber durch die --> ---> und so sieht man ja eine gewisse Einrücktiefe und das wirst Du schon hin kriegen.
 

Zurück
Oben