Java Übung in der Schule Java 

Status
Für weitere Antworten geschlossen.

buba

Registered +
Registriert
Jan. 2007
Beiträge
33
Hallo zusammen,

Hab in der Schule folgende Aufgabe erhalten:

Aufgabe 1
Ausgabe Schaltjahr ja/nein
• Das Programm soll ausgeben, ob eine eingegebene
Jahreszahl einem Schaltjahr entspricht. Die Eingabe soll
nach einer entsprechenden Aufforderung vorgenommen
werden können, die
Ausgabe soll aber mit den effektiv eingegebenen
Werten erfolgen, also nicht nur symbolisch mit
Summe a + b = ….

Formel:
Schaltjahre sind alle glatten Jahrhunderte, die ohne Rest durch 400 teilbar sind ( 2000: ja / 2100: nein) und alle sonstigen Jahre, die ohne Rest durch 4 teilbar sind.

Bessere Veranschaulichung: http://schwittlinsky.net/InfoGK/Schaltjahre.pdf

• Hinweise
• Die Prüfung soll aber mit einem booleschen Ausdruck
erfolgen (nicht geschachtelte if-Anweisungen).
– Logische Operatoren

Viel Spass :)

Ich kapiers voll nööööööööööd
 
Dacht ich mir schon, die Formel laut text ist schon mal falsch, wie man ja auch dann auf dem pdf sieht :-)

Ansonsten, vielleicht mal ne Frage stellen? ...
 
habs mal mit ner if abfrage gemacht:

PHP:
import java.util.*;

public class SchaltjahrMain {

static void rechnen(){
Scanner get;
int y;

System.out.println("Bitte geben Sie die Jahreszahl ein: ");
get = new Scanner(System.in);
y = get.nextInt();

if( y == 0){
System.out.println("Bitte Zahl über 0 eingeben!");
}
else if( y%4 == 0 || y%400 == 0 && y%100 != 0){
System.out.println("Das Jahr " + y + " ist ein Schaltjahr!");
}
else{
System.out.println("Das Jahr " + y + " ist kein Schaltjahr!");
}
}
public static void main(String[] args) {
rechnen();
}

}
 
Ah mist, hab jahrhunderte überlesen.
Passt schon ^^
Zahlen lesen sich halt doch leichter als Texte :-D

Naja also das ist mal die Funktion zur Bestimmt eines Schaltjahres:
PHP:
private static boolean istSchaltjahr(int j) 
{
if (j % 400 == 0){
return true;
}
else if ( j % 100 == 0){
return false;
}
else if ( j % 4 == 0){
return true;
}

return false;

}

Sooo diese If-Abfragen sind jetzt verkettet und nicht verschachtelt. Haha...
Jetzt musste dich nur noch um den Rest Kümmern :-D
 
ah ok sollte mit ner bool funktion gemacht werden. naja egal meins funktioniert auch :D
 
Nein sollte es nicht. steht ja nirgends. Nur weil ichs geschrieben habe, ist es ja nicht richtig ^^
Und deins ist sogar "richtiger" als meins, weil die Prüfung auf ein Schaltjahr mit einem einzigen Ausdruck erfolgen sollte.
Hätte man mal genauer in der Angabe schreiben sollen.
;)

Allerdings könnte es sein, das du in deiner Lösung noch Klammern setzen musst oder hast du das schon mal für jeden einzelnen Fall auf Richtigkeit überprüft? :-D
 
woow,
leute wie könnt ihr nur sooooooooo schnelllll java programmieren?? :confused:
Ich hab erst nacht 2 Tagen mit ner Antwort gerechnet, doch ihr scheint es ja volllllllllllllll im griff zu haben :D

Ich probiers mal aus, wenns funzt, gibts noch mehhhr davaon ;) :)

:thx: :thx: :thx:

Woow seit ihr aber schnell *muss das erst mal verdauen*
 
Die Übungen sind immer die gleichen :D

Ich war mal vor 2 Jahren Tutor an der Uni für eine Übungsgruppe in Java und da mussten die Studenten die gleiche Aufgaben lösen :)

Ich kann dir nur raten zu versuchen die Aufgabe selbst zu lösen, ist gar nicht so schwer. Außerdem hast du da später mehr davon wenn du es selbst hinbekommst :)
 
Die Übungen sind immer die gleichen :D

Ich war mal vor 2 Jahren Tutor an der Uni für eine Übungsgruppe in Java und da mussten die Studenten die gleiche Aufgaben lösen :)

Ich kann dir nur raten zu versuchen die Aufgabe selbst zu lösen, ist gar nicht so schwer. Außerdem hast du da später mehr davon wenn du es selbst hinbekommst :)

Kann ich mich eigentlich nur anschliessen.
Bin deswegen meistens auch dagegen komplett Lösungen zu präsentieren,
deswegen auch der erste Post. ;)
 
Allerdings könnte es sein, das du in deiner Lösung noch Klammern setzen musst oder hast du das schon mal für jeden einzelnen Fall auf Richtigkeit überprüft? :-D

Ehrlich gesagt noch nicht. Wo könnte denn ein Problem auftreten??
 
In dem Fall tritt wahrscheinlich kein Problem auf, aber um überhaupt garnicht erst so einen Möglichkeit enstehen zu lassen, immer diese Ausdrücke Klammern.
Das erhöht meistens auch noch die Lesbarkeit (Wenn man wirklich mal ernsthaft Software schreibt ist das ein enorm wichtiger Punkt ;) )

In diesem Fall z.b.
y%4 == 0 || y%400 == 0 && y%100 != 0
Könnte es passieren das durch Compileroptimierungen oder durch Optimierungen seitens der VM als erstes der Ausdruck
y%400 == 0 && y%100 != 0 ausgewertet wird und das Ergebnis dann mit einem Oder mit y%4 == 0 ausgewertet. Und das möchtest du ja nicht.
Das würde nämlich bedeuten das du dies hier erhälst
y%4 == 0 || (y%400 == 0 && y%100 != 0)
Und das würde wiederum bedeuten es reicht y%4 == 0 zu erfüllen und schon hast du ein Schaltjahr und der Rest wird dank dem Oder nicht mehr berücksichtigt.
Du siehst also, das Fehlerpotential ist auf jedenfall da. Es muss nicht so kommen. Aber es KANN :-)

*edit*
In C hatte ich mal eine Tabelle, aus der konnte man genau rauslesen welche Operatoren wie stark binden und dadurch kann man dann auch rausbekommen welche zuerst ausgewertet werden. Hab ich bisher in Java noch nicht entdeckt. Allerdings ist es da imho auch nicht dann 1000% sicher, weil es sehr viel verschiedene VMs gibt und deswegen würd ich da dann nicht mein Geld verwetten. Lieber richtig Klammern und ruhig schlafen :-)

*edit2*
Tja hab ne Tabelle jetzt für Java gefunden :-)
Tut mir leid, && bindet stärker als || :-D
Also MUSST du Klammern setzen :-)
Galileo Computing :: Java ist auch eine Insel – 2.4 Ausdrücke, Operanden und Operatoren
Hierzu passt auch gut das Zitat von dem Link:
"Die Tabelle lehrt uns, dass im Beispiel A && B || C das Und stärker als das Oder bindet, also der Wert mit der Belegung A=false, B=false, C=true zu true ausgewertet wird. Vermutlich gibt es Programmierer, die dies wissen oder eine Tabelle mit Rangordnungen immer am Monitor kleben haben. Aber beim Durchlesen von fremdem Code ist es nicht schön, immer wieder die Tabelle konsultieren zu müssen, die verrät, ob nun das binäre Xor oder das binäre Und stärker bindet."
 
hey -=[P3ac]=-
dein Code funzt super.

doch der Code von Stelzi läuft bei mir nicht, erhalte zimlich viele Fehler.
Hab die Buchstaben y und j vertauscht, doch kommen immernoch viele Fehler :( Kannst du Stelzi den Code so posten das er geht?

Ich hab volll keinen Durchblick. Hat jemand ein gutes Dokument? Unser Lehrbuch ist riesig :-(
 
Ich habs mal anders gemacht bzw die rechnung übernommen und es anders EIN-und AUS geben lassen ^^ bringt zwar nichts aber ich finds so bessa :P

Code:
import javax.swing.*;
public class Schaltjahr {
/*
* Autor :Scarecraft
*/

public static void main(String[] args)

{
double
jahr;

String s=JOptionPane.showInputDialog("Welches Jahr soll geprüft werden?");
jahr=Double.parseDouble(s);

if (jahr == 0)
{
JOptionPane.showMessageDialog(null,"Bitte eine zahl über 0 eingeben!");
}
else
if((jahr%4 == 0 )|| (jahr%400 == 0) && (jahr%100 != 0))
{
JOptionPane.showMessageDialog(null,"Das Jahr "+jahr+" ist ein Schaltjahr!");
}
else 
{
JOptionPane.showMessageDialog(null,"Das Jahr "+jahr+" ist kein Schaltjahr!");
}

}

}
 
buba schrieb:
hey -=[P3ac]=-
dein Code funzt super.

doch der Code von Stelzi läuft bei mir nicht, erhalte zimlich viele Fehler.
Hab die Buchstaben y und j vertauscht, doch kommen immernoch viele Fehler :( Kannst du Stelzi den Code so posten das er geht?

Ich hab volll keinen Durchblick. Hat jemand ein gutes Dokument? Unser Lehrbuch ist riesig :-(

Ähm, das liegt wahrscheinlich daran das du einfach nur den code genommen hast und ihn in deinen Editor oder was du auch immer verwendest hinein kopiert hast ohne dich viel weiter damit zu befassen. Das was stelzi gepostet hat ist nur eine Funktion die musst du dann in dein Programm einbauen. Hingegen ich hab dir gleich das ganze Programm geschickt... Schau dir nochmal die beiden Codes an, dann kannst du dann sicher ein eigenes schreiben :)

MFG
 
hey Scarecraft

Genau das hab ich gesucht, prima, dein code ist super!!!

Vielen dank

Der code ist genial, denn er entspricht genau der Aufgabe. -> perfekt.

Vielen Dank

Danke auch an alle andere, nun werde ich die anderen übungen alleine meistern, ich versuch es auf jenenfall :)

Werde wieder Posten wenn ich nicht weiterkomm.

danke
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Antworten
13
Aufrufe
2K
M
  • Gesperrt
  • Umfrage Umfrage
2
Antworten
28
Aufrufe
5K
schlueter60
S
Zurück
Oben Unten