Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich programmiere momentan einen Schaltjahrrechner.
Die Berechnung des Schaltjahres ist schon geschrieben und funktioniert ohne Probleme.
Mein Problem ist, dass ich mein Programm dazubringen muss nur vierstellige Zahlen akzeptiert;
also die Zahl 8 n. Chr. nur akzeptiert und weiterverarbeitet, wenn man die Zahl als 0008 eingibt.
Mein bisheriger Code sieht so aus:
package schaltjahrrechner;
import java.util.Scanner;
public class Schaltjahrrechner {
public static void main(String[] args) {
try{
Scanner keyboard=new Scanner(System.in);
int Jahr;
System.out.println("Geben Sie eine vierstellige Jahreszahl.");
System.out.println("Please enter a number of a year, the number has to have four digits.");
System.out.println("Bedingung: Die Zahl muss >= 0000 sein");
System.out.println("Condition: The number have to be >= 0000");
System.out.println("Bedingung: Die Zahl muss <= 2100 sein.");
System.out.println("Condition: The number has to be <=2100.");
Jahr=keyboard.nextInt();
if (Jahr<0) {System.out.println("Diese Zahl ist außerhalb des berechenbaren Zahlenraums.");
System.out.println("The number is not computable.");
}
else if (Jahr>=2101) {System.out.println("Diese Zahl ist außerhalb des berechenbaren Zahlenraums. ");
System.out.println("The number is not computalbe.");
}
else if (Jahr % 100 == 0) {System.out.print("Das Jahr " + Jahr + " ist kein ein Schaltjahr");
System.out.println("The year " + Jahr + " is not a leap-year.");
}
else if ((Jahr % 400 == 0)) {System.out.print("Das Jahr " + Jahr + " ist ein Schaltjahr");
System.out.println("The year " + Jahr+ " is a leap-year.");
}
else if (Jahr % 4==0) {System.out.print("Das Jahr " + Jahr + " ist ein Schaltjahr");
System.out.println("The year "+Jahr+ "is a leap-year.");
}
else {System.out.println("Das Jahr " + Jahr + " ist kein Schaltjahr");
System.out.println("The year" +Jahr+ "is not a leap-year.");
}
keyboard.close();
}catch (Exception e) {System.out.println("Bitte geben Sie eine Zahl ein, wie oben beschrieben");
System.out.println("Please enter a number with the conditions above.");
}}
}
Wie kann ich mein Code bearbeiten um eine Begrenzung der Zahlenanzahl auf nur 4 Ziffern zu erreichen. Alo dass mein Programm nur Zahlen akzeptiert, welche 4 Ziffernhat und sonst eine Fehlermeldung ausspuckt.
Vielen Dank und schönen Abend noch,
Der Maschbaustudent
Wie kann ich die String aktivieren?
Und wie kann ichdas Abbrechen als "else" programmieren, sobald die Bedingungen (weniger/mehr als 4 Ziffern) nicht erfüllt wird?
Mir ist noch nicht ganz klar was du willst aber einfach so wie es oben schon mal stand:
Code:
if(String.valueOf(Jahr).length() != 4) {
System.out.println("Sie muessen eine vierstellige Zahl eingeben");
// und dann geht es hier irgendwie weiter
}
else {
// es war alles in Ordnung, jetzt geht es hier weiter
}
Und was heisst wie kann ich String aktivieren ? Schreibe es mal in deinem Code einfach an der gewünschten Stelle so hin. Du musst da nix aktivieren
Im Endeffekt möchte ich das mein Programm nur die Berechnung ausführt, wenn ich vier Stellen eingeben. Also sofort abbricht wenn ich weniger oder mehr als 4 Ziffern eingebe.
Berechnung nur wenn Bedingung 1 (Anzahl der Ziffern) und Bedingung 2 (ob Schaltjahr oder nicht) erfüllt sind dann Ausgabe (....ist/ist kein Schaltjahr)
Sobald Bedingung 1 oder 2 nicht erfüllt sind möchte ich einen Abbruch:
"Diese Zahl kann nicht berechnet werden...."
"Jahr" ist ja vom Typ int und du liest sie via Scanner und nextInt() ein. Und dann rechnest du damit weiter. Und ich behaupte mal wenn du dort 0008 eingibst ist das Ergebnis das gleiche als wenn du 8 eingibst.
Gib dir doch "Jahr" einfach mal nach dem einlesen wieder aus.
"Entwerfen sie einen Schaltjahrrechner welcher die Schaltjahre von 0000 bis 2100 ausgibt.
Bedingungen:
Das Programm muss abbrechen, wenn die eingegebene Zahl keine 4 Stellen hat."
Ich halte diese Bedingung zwar für absoluten Schwachsinn aber wenn es sein muss:
Code:
Scanner keyboard=new Scanner(System.in);
int Jahr;
System.out.println("Geben Sie eine vierstellige Jahreszahl.");
System.out.println("Please enter a number of a year, the number has to have four digits.");
System.out.println("Bedingung: Die Zahl muss >= 0000 sein");
System.out.println("Condition: The number have to be >= 0000");
System.out.println("Bedingung: Die Zahl muss <= 2100 sein.");
System.out.println("Condition: The number has to be <=2100.");
String line = keyboard.nextLine();
if (line.length() < 4) {
// Fehler ausgeben und return
}
else {
Jahr=line.parseInt();
}
Jahresangaben macht man ja sonst auch nicht mit führenden Nullen. Kein Mensch sagt im Jahr 0155 n.Chr. wurde Karthago erobert oder im Jahr 0999 wurde Karl der Grosse zum Kaiser gekrönt.
Dem Scanner fehlt durch das "String line=...." die eigentliche Variable Jahr, die er eigentlich als eingabe annehmen soll.
Auch meint Netbeans, dass die else-Anweisung "Jahr=line.parseInt ();" nicht als Symbol oder Methode gefunden werden kann.
Es ist sowieso Schwachsinn, mit den hier benutzten Regeln so alte Schaltjahre zu ermitteln. Das funktioniert so doch frühestens seit der Umstellung auf den gregorianischen Kalender im 16. Jahrhundert und da war es ja ohnehin schon vierstellig.
Ich verstehe nicht, warum du das machen möchtest, denn in dem Zweig der Bedingung benötigst du die Variable doch eigentlich nicht. Du kannst ihr einfach mit Jahr = GewünschterWert; den gewünschten Wert zuweisen.
Danke an alle für die schnelle und super kompetente Hilfe.
Zum Schluss: @JStein52: zum Thema warum die Nullen davor bleiben müssen, sag ich nur: Wat mut, dat mut. Besser ich kann es jetzt merke es mir und kann es dann in der nächsten Klausur und auch danach weiterhin anwenden.
mein Modulo habe ich verwirklicht durch z. Bsp. if(Jahr%4!=0)........
Das ist mein jetziger Code. Wo liegt mein Fehler? trotz der line.length nimmt das Programm auch eingaben, welche merh oder weniger als 4 Ziffern haben.
Java:
package schaltjahrrechner;
import java.util.Scanner;
public class Schaltjahrrechner {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int Jahr;
System.out.println("Geben Sie eine vierstellige Jahreszahl.");
System.out.println("Please enter a number of a year, the number has to have four digits.");
System.out.println("Bedingung: Die Zahl muss >= 0000 sein");
System.out.println("Condition: The number have to be >= 0000");
System.out.println("Bedingung: Die Zahl muss <= 2100 sein.");
System.out.println("Condition: The number has to be <=2100.");
String line = keyboard.nextLine();
if ((line.length() < 4) || (line.length() > 4)) {
System.out.print("Das Jahr " + line + " kann nicht berechnet werden. Sie müssen vier Ziffern eingeben.");
System.out.println("The year " + line + " is not computable. The number has to have four digits.");
} else {
Jahr = Integer.parseInt(line);
if (Jahr == 0000) {
System.out.println("Das Jahr 0000 ist ein Schaltjahr");
System.out.println("The year 0000 is a leap-year.");
} else if (Jahr < 0) {
System.out.println("Diese Zahl ist außerhalb des berechenbaren Zahlenraums.");
System.out.println("The number is not computable.");
} else if (Jahr >= 2101) {
System.out.println("Diese Zahl ist außerhalb des berechenbaren Zahlenraums. ");
System.out.println("The number is not computalbe.");
} else if (Jahr % 100 == 0) {
System.out.println("Das Jahr " + line + " ist kein Schaltjahr");
System.out.println("The year " + line + " is not a leap-year.");
} else if ((Jahr % 400 == 0)) {
System.out.println("Das Jahr " + line + " ist ein Schaltjahr");
System.out.println("The year " + line + " is a leap-year.");
} else if (Jahr % 4 == 0) {
System.out.println("Das Jahr " + line + " ist ein Schaltjahr");
System.out.println("The year " + line + " is a leap-year.");
} else if ((Jahr % 4 != 0) && (Jahr % 400 != 0)) {
System.out.println("Das Jahr " + line + " ist kein Schaltjahr");
System.out.println("The year " + line + " is not a leap-year.");
}
}
}
}
Das ist mein jetziger Code. Wo liegt mein Fehler? trotz der line.length nimmt das Programm auch eingaben, welche merh oder weniger als 4 Ziffern haben.
Geben Sie eine vierstellige Jahreszahl.
Please enter a number of a year, the number has to have four digits.
Bedingung: Die Zahl muss >= 0000 sein
Condition: The number have to be >= 0000
Bedingung: Die Zahl muss <= 2100 sein.
Condition: The number has to be <=2100.
150
Das Jahr 150 kann nicht berechnet werden. Sie müssen vier Ziffern eingeben.The year 150 is not computable. The number has to have four digits.
run:
Geben Sie eine vierstellige Jahreszahl.
Please enter a number of a year, the number has to have four digits.
Bedingung: Die Zahl muss >= 0000 sein
Condition: The number have to be >= 0000
Bedingung: Die Zahl muss <= 2100 sein.
Condition: The number has to be <=2100.
12345
Das Jahr 12345 kann nicht berechnet werden. Sie müssen vier Ziffern eingeben.The year 12345 is not computable. The number has to have four digits.
Hatte die if Bedingung der line.length erst als 2 IF Bedingungen stehen. Dadurch hat er nur für die eine If Bedingung die dazugehörige Else-Bedingung ausgeführt.