Schaltjahr berechnen

Lion.King

Aktives Mitglied
Hallo,

ich möchte ein Programm schreiben, wo ich eine Zahl im Terminal eingebe und dann von dieser Zahl bis 1 runtergezählt wird.

Dabei soll die countdown-Methode eine while-Schleife benutzen und vom übergebenen Wert "c" runterzählen und dabei Zeilenweise den aktuellen Wert ausgegeben. Wenn die 0 erreicht wird, wird "Start!" ausgegeben.

Die main-Methode soll mit einer for-Schleife gemacht werden. Der Nutzer soll immer wieder nach einem Wert gefragt werden, bis eine Zahl kleiner oder gleich 0 eingegeben wird.
Nach jeder Eingabe wird ein Countdown mit dem eingegebenen Wert gestartet.

Es muss am Ende z.B so aussehen: Countdown.PNG

Das ist mein bisheriger Code:

Java:
public class Loops {
   
    public static void main(String[] args) {
        int c;
        c = Terminal.askInt("");
        for (int c = 1; c <= 1;){
           
        }
    }
   
    public static void countdown(int c) {
        while (c>=1){
            Terminal.print("c");
            c--;
        }
       
    }
   
    public static int getCount() {
        return Terminal.askInt("Countdown:\n");
    }
   
}



Ich verstehe aber diese Fehler nicht, die auftauchen:

/tmp/QhNKDqGAtA/Loops.java:5: error: cannot find symbol
c = Terminal.askInt("");
^
symbol: variable Terminal
location: class Loops
/tmp/QhNKDqGAtA/Loops.java:6: error: variable c is already defined in method main(String[])
for (int c = 1; c <= 1;){
^
/tmp/QhNKDqGAtA/Loops.java:13: error: cannot find symbol
Terminal.print("c");
^
symbol: variable Terminal
location: class Loops
/tmp/QhNKDqGAtA/Loops.java:20: error: cannot find symbol
return Terminal.askInt("Countdown:\n");
^
symbol: variable Terminal
location: class Loops
4 errors

Kann mir jemand sagen, wie ich diese Fehler beheben und die Anforderungen erfüllen kann. Und sind noch weitere Unstimmigkeiten in meinem Code zu finden?
 

temi

Top Contributor
Du solltest inzwischen selbst versuchen, die Fehlermeldungen zu lesen und zu verstehen. Die sind zwar auf englisch, bilden aber dennoch ganze Sätze mit einer Aussage.

In Zeile 6: "variable c is already defined in method main"

Da steht, das "c" bereits deklariert wurde und eine Variable kann in einem Scope nur einmal deklariert werden.

Bei den anderen Fehlern, kann es sein das die Klasse "Terminal" nicht bekannt ist?

Und sind noch weitere Unstimmigkeiten in meinem Code zu finden?

Ansonsten schätze ich mal, dass das Programm nicht tut, was es soll, die Schleife in der main() macht z. B. gar nichts und auch der Rest besteht so ziemlich nur aus Unstimmigkeiten.
 

Lion.King

Aktives Mitglied
Ich habe ein Problem bei der countdown-Methode. Wie schreibe ich es, dass Start! ausgegeben wird, wenn ich 0 erreiche, mit der while-Methode?

Meine bisherige Methode:

Java:
    public static void countdown(int c) {
        while (c>0){
            Terminal.print("c");
            c--;
        }
    }
 

temi

Top Contributor
Wie schreibe ich es, dass Start! ausgegeben wird
Java:
System.out.println("Start!");

Oder du verwendest deine Terminal.print() Methode, die offenbar auch Text ausgibt. Das ist jetzt aber nur eine Vermutung.
Java:
Terminal.print("Start!");

Aber vermutlich war das nicht die eigentliche Frage, oder?

Du sollst in der while-Schleife herunterzählen und nachdem das geschehen ist, den Text ausgeben.
 

KonradN

Super-Moderator
Mitarbeiter
Ich habe ein Problem bei der countdown-Methode. Wie schreibe ich es, dass Start! ausgegeben wird, wenn ich 0 erreiche, mit der while-Methode?

Meine bisherige Methode:

Java:
    public static void countdown(int c) {
        while (c>0){
            Terminal.print("c");
            c--;
        }
    }
Du willst aber doch den Inhalt der Variablen c ausgeben und nicht das Zeichen c. Also musst Du nicht ein String Literal angeben sondern die Variable - oder in anderen Worten: Die Quote Zeichen müssen weg!
 

Lion.King

Aktives Mitglied
Soll ich dabei eine if-Methode anwenden, um zu schreiben, dass bei 0 Start! ausgegeben wird, oder geht es auch bei while?
 

KonradN

Super-Moderator
Mitarbeiter
Also muss ich es in der main-Methode schreiben.

Das wäre dann so, wie wenn Du zum Einkaufen geschickt wirst: Du sollst den Einkaufswagen mit Getränkekisten kaufen um dann am Ende Chipstüten dazu zu tun.

Dann kannst Du selbstverständlich zum Laden fahren, das mit den Getränken machen um dann erst einmal nach Hause zu fahren. Die Chips kann man ja auch im Anschluss noch holen.

Technisch funktioniert es, aber Sinn macht es nicht! Und wenn das "Start!" mit zum Countdown gehört (So wie das kaufen der Chips zum Einkauf), dann sollte man es auch entsprechend mitmachen.
 

Lion.King

Aktives Mitglied
Also so?

Java:
    public static void countdown(int c) {
        while (c>0){
            Terminal.print(c);
            c--;
        }
        if (c==0){
            Terminal.print("Start!");
        }
    }
 

Lion.King

Aktives Mitglied
In der mai-Methode muss ich mit der for-Schleife immer wieder fragen, bis eine Zahl kleiner oder gleich 0 eingegeben wird. Deshalb habe ich es mit der getCount-Methode verbunden. Habe ich es richtig gemacht?

Java:
public class Loops {
    
    public static void main(String[] args) {
        for (int c = 1; c > 0; c--){
            getCount();
        }
    }
    
    public static void countdown(int c) {
        while (c>0){
            Terminal.print(c);
            c--;
        }
        if (c==0){
            Terminal.print("Start!");
        }
    }
    
    public static int getCount() {
        return Terminal.askInt("Countdown:\n");
    }
    
}
 

KonradN

Super-Moderator
Mitarbeiter
Hast Du denn einfach mal versucht, dein Programm auszuführen? Das ist doch das tolle an der Programmierung: Du kannst Dinge direkt ausprobieren.

Also: Was macht Dein Programm? Macht es das, was es soll?
 

Lion.King

Aktives Mitglied
Bei mir funktioniert die Eingabeanforderung nicht, weshalb bei mir immer die Fehler mit Terminal aufkommen. Deshalb bin ich mir immer nicht sicher, ob ich es richtig gemacht habe.
 

KonradN

Super-Moderator
Mitarbeiter
Euch wird diese Klasse doch in irgend einer Form gegeben worden sein. Die musst Du dann natürlich bei Dir auch einbinden, damit Du diese nutzen kannst. Das ist natürlich immer der erste Schritt: Die Entwicklungsumgebung / das Projekt richtig einrichten.
 

Lion.King

Aktives Mitglied
Ich habe einen Fehler bei mir gemerkt: ich habe die for-Methode nicht mit der countdown-Methode verbunden, weshalb das bei mir rauskommt:

Loops1.PNG

Wie kann ich es verbinden?
 

temi

Top Contributor
Also vor getCount(); einfach countdown; schreiben?
Ich überlege mir gerade, ob du programmierst oder deine Programme errätst/würfelst/lost?

Versuch doch einfach erst mal über das Problem nachzudenken, bevor du irgendwas schreibst.

Du möchtest zuerst eine Eingabe vom Benutzer haben und danach mit dem Ergebnis dieser Eingabe den Countdown durchführen.
 

temi

Top Contributor
In der mai-Methode muss ich mit der for-Schleife immer wieder fragen
Die for-Schleife ist für diesen Zweck übrigens nicht ganz optimal (auch, wenn es geht). Prinzipiell kann man jede Schleifenart in Java durch eine der anderen ersetzen, aber die for-Schleife verwendet man i.d.R., wenn man eine bekannte Anzahl von Schleifendurchläufen haben möchte.

Du möchtest ja etwas machen, wie "solange der Benutzer eine Zahl größer als 0 eingibt mache was".

Ergänzung: Falls du Fragen zum Aufrufen von Methoden oder zum Rückgabewert hast, dann stelle sie konkret hier im Forum. Ich habe das Gefühl, dass du einige grundlegende Konzepte noch nicht verstanden hast.
 
Zuletzt bearbeitet:

Lion.King

Aktives Mitglied
Java:
public class Loops {
    
    public static void main(String[] args) {
        for (int c = 1; c > 0; c--){
            Terminal.askInt(getCount());
            Terminal.askInt(countdown);
        }
    }
    
    public static void countdown(int c) {
        while (c>0){
            Terminal.print(c);
            c--;
        }
        if (c==0){
            Terminal.print("Start!");
        }
    }
    
    public static int getCount() {
        return Terminal.askInt("Countdown:\n");
    }
    
}

Was muss ich noch ändern?
 

KonradN

Super-Moderator
Mitarbeiter
Ich weiss nicht, wie zielführend das hier ist. Dein Code wird sich nicht übersetzen lassen, daher vermute ich, dass Du immer noch keine Entwicklungsumgebung eingerichtet hast. Programmieren lernt man nur durch Praxis. Es führt absolut kein Weg daran vorbei, sich an seinem Rechner mit der Programmierung aktiv zu beschäftigen und das bedeutet: Programme schreiben und immer weiter anpassen, Dinge ausprobieren und all sowas.

Daher schau noch einmal, was am Anfang gesagt wurde: Was wird alles gebraucht? Wie sollt Ihr arbeiten? Wo bekommt ihr die Klassen her, die ihr verwenden sollt?

Und wenn Du ein Programm schreiben willst, dann musst Du Dir erst Gedanken machen, was das Programm machen soll. Und das schreibst Du in Kommentaren auf oder auf einem Zettel. Ja, Stift und Papier sind sehr wichtige Tools!

Und dann kannst Du das, was da das Programm machen soll, beschreiben:
1. Zahl abfragen
2. Wenn Zahl = 0, dann Abbruch
3. Countdown anzeigen
4. Weiter bei 1.

Das wäre so ein typischer Ablauf. Und denn kannst Du noch verfeinern, denn das ist zu grob. Spiel es auf einem Zettel durch. Zahl abfragen. Was machst Du da? Du schreibst eine Zahl auf den Zettel? Ok -> Du musst eine Zahl speichern. Also wird aus Punkt 1 etwas wie:
1. Zahl := Zahl abfragen

Dann kann man sich überlegen, wie das mit dem Sprung hin zur 1 funktionieren kann ... das ist eine Schleife ohne Bedingung ... Als eine sogenannte Endlosschleife.
Wie geht ein Abbruch (einer Schleife)?
...

Und dann kannst Du das 1:1 Programmieren. Schritt 1 wird dann sowas wie int zahl = zahlEingeben();
zahlEingeben wird dann eine neue Methode, die Du noch schreiben musst.

==> So unterteilst Du das Problem in Teilprobleme.
Die Teilprobleme kannst Du auch testen. Schreib einfach nur eine main mit etwas wie
System.out.println(zahlEingeben());
um z.B. zahlEingeben zu testen.

So hast Du im Nu ein funktionierendes Programm.
 

temi

Top Contributor
Ergänzung: Falls du Fragen zum Aufrufen von Methoden oder zum Rückgabewert hast, dann stelle sie konkret hier im Forum. Ich habe das Gefühl, dass du einige grundlegende Konzepte noch nicht verstanden hast.
Vielleicht mal ein paar Fragen, um das zu klären, was du offensichtlich nicht verstanden hast.

Was macht diese Methode? Terminal.askInt("Countdown:\n");

Was macht diese Methode?
Java:
public static int getCount() {
    return Terminal.askInt("Countdown:\n");
}

Was möchtest du mit diesen beiden Zeilen erreichen? Was ist dein Ziel hier?
Java:
Terminal.askInt(getCount());
Terminal.askInt(countdown);
 

KonradN

Super-Moderator
Mitarbeiter
Kann aber doch eigentlich nicht sein. In seinem ersten Beitrag zeigt er ja eine ganze Reihe von Fehlermeldungen.
Es fehlen aber doch die Abhängigkeiten. Terminal wird nicht gefunden. Daher scheint da noch was zu fehlen. Und das verhindert, dass er Dinge ausprobieren kann. Aber sind natürlich nur Vermutungen.
 

temi

Top Contributor
Es fehlen aber doch die Abhängigkeiten. Terminal wird nicht gefunden. Daher scheint da noch was zu fehlen. Und das verhindert, dass er Dinge ausprobieren kann. Aber sind natürlich nur Vermutungen.
Wobei #21 zeigt, wie seine "Ausgabe" (vielleicht) aussieht. Und da steht zumindest mal "Countdown:". Demnach müsste Terminal ja nun irgendwie funktionieren.

Falls nicht, sollte das sein erstes Ziel sein:
Java:
public class Foo {
 
    public static void main(String[] args) {
        int intValue = Terminal.askInt("Wert eingeben!");
        Terminal.print(intValue);
    }

}
Sobald das funktioniert, kann es weiter gehen.

EDIT: Falls die Ausgabe tatsächlich, wie oben gezeigt, in dieser tabellarischen Form erfolgt, dann scheint er "seinen Code" an ein Schul-/Unisystem zu übergeben, was dann Tests darauf ausführt und diese Ausgabe liefert. Insofern hat er vielleicht wirklich kein Java auf seinem Rechner zur Verfügung, was maximal schlecht ist. Aber das ist alles nur wildes Herumraten.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Das könnte die Klasse von der TU-Berlin sein und da ist es durchaus möglich, dass dies einfach eine Ausgabe von der automatischen Überprüfung ist. Aber ich gehe mal davon aus, dass die Kursteilnehmer des Java Kurses die notwendigen Klassen zur Verfügung gestellt bekommen. Aber auch wenn nicht, dann sollte es leicht sein, sowas schnell und einfach nach zu bauen. Die Dokumentation des Klasse findet man (so es um diesen Kurs der TU-Berlin gehen sollte) unter https://www.uebb.tu-berlin.de/fileadmin/fg122/Books/java/edition3/javadoc/terminal/Terminal.html (Wobei das einfach nur ein per Google gefundener Link ist. Ob der aktuell ist oder nicht, ist dabei erst einmal offen und kann von uns nicht bewertet werden. Aber das sind ja Klassen, an denen wenig geändert wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
J Schaltjahr Java Basics - Anfänger-Themen 6
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
R Schaltjahr problem Java Basics - Anfänger-Themen 10
P Schaltjahr: "sauberer" Code Java Basics - Anfänger-Themen 4
C Schaltjahr Java Basics - Anfänger-Themen 4
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
B Schaltjahr überprüfen (Code) Java Basics - Anfänger-Themen 4
U Java Quellcode Schaltjahr Java Basics - Anfänger-Themen 13
G Schaltjahr Java Basics - Anfänger-Themen 6
W Schaltjahr abbrechen wenn <1583 Java Basics - Anfänger-Themen 11
W Schaltjahr Berechnung Java Basics - Anfänger-Themen 24
S schaltjahr (gelöst zu 90 %), allerdings folgeprob :/ Java Basics - Anfänger-Themen 18
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35
H Eingabedaten berechnen Java Basics - Anfänger-Themen 9
B Tranportkosten berechnen mit unterschiedlichen MwSt Java Basics - Anfänger-Themen 9
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Sparplan berechnen Java Basics - Anfänger-Themen 4
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
CptK Best Practice Schussparabel berechnen Java Basics - Anfänger-Themen 3
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
E Statistische Kennzahlen berechnen Java Basics - Anfänger-Themen 2
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
C Preis berechnen mit Java Java Basics - Anfänger-Themen 4
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
L Pi berechnen Java Basics - Anfänger-Themen 1
CptK Term (als String) berechnen und ausgeben Java Basics - Anfänger-Themen 10
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
M Erste Schritte Mittelwert berechnen -> Methode in der Methode? Java Basics - Anfänger-Themen 14
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
R Liga Berechnen Java Basics - Anfänger-Themen 1
P Klassen Berechnen mehrerer Map-Werte Java Basics - Anfänger-Themen 13
R Fussballtabellen berechnen Java Basics - Anfänger-Themen 12
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
F ISBN Prüfziffer berechnen Java Basics - Anfänger-Themen 17
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24
G Array Mittelwert berechnen, wie? Java Basics - Anfänger-Themen 8
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
N Mit LocalDate alter berechnen Java Basics - Anfänger-Themen 3
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
N Arrays mit Zufallzahlen füllen und Statistiken berechnen Java Basics - Anfänger-Themen 5
A Wochentag berechnen Java Basics - Anfänger-Themen 10
Ste3et_C0st Vectoren berechnen Java Basics - Anfänger-Themen 8
L Durchschnitt in der Schleife berechnen Java Basics - Anfänger-Themen 11
A Kreisumfang/-Fläche vom Kreis berechnen Java Basics - Anfänger-Themen 39
L Wochentag berechnen Java Basics - Anfänger-Themen 5
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben