Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Schaltjahrberechnung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Schaltjahrberechnung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
InformatikJava12
unregistriert
Schaltjahrberechnung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich hätte eine kleine Frage. Wie kann ich im Java Programm realisieren, dass eine Jahreseingabe ein Schaltjahr ist oder nicht ohne die Modulooperation zu verwenden.

Die Bedingung weis ich: Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist aber nicht durch 100, es sei denn es ist zusätzlich durch 400 teilbar.
Also ich skizziere meine Idee;
Also sei z die eingegebene Jahreszahl. Dann soll das Programm prüfen, ob rest = z- z*4 = 0 unnd rest = z-z*100 ungleich 0. Wie kann ich das in Java am besten realisieren? Mit if und else wsl aber dann wie genau.
Mit der Java Bibliothek kann ich auch nicht arbeiten.
30.10.2017 17:28
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo InformatikJava12,

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
public class Test {
	public static void main(String[] args) { 
		int jahr = 2016;

		mitDivision(jahr);
		ohneDivision(jahr);

	}

	public static void mitDivision(int jahr)
	{
		boolean istSchaltJahr = true;

		// durch vier teilbar?
		if ((jahr / 4)*4==jahr)
		{
			System.out.println("Mit Division: Jahreszahl ist durch 4 Teilbar");
		}
		else
		{
			System.out.println("Mit Division: Jahreszahl ist nicht durch 4 Teilbar");
			istSchaltJahr = false;
		}

		// durch 100 teilbar?
		if ((jahr / 100)*100==jahr)
		{
			System.out.println("Mit Division: Jahreszahl ist durch 100 Teilbar");
			istSchaltJahr = false;
		}

		// durch 400 teilbar?
		if ((jahr / 400)*400==jahr)
		{
			System.out.println("Mit Division: Jahreszahl ist durch 400 Teilbar");
			istSchaltJahr = true;
		}

		if (istSchaltJahr)
		{
			System.out.println("Mit Division: Das Jahr " + jahr + " ist ein Schaltjahr");
		}
		else
		{
			System.out.println("Mit Division: Das Jahr " + jahr + " ist kein Schaltjahr");
		}
	}

	public static void ohneDivision(int jahr)
	{
		int tmp = jahr;
		boolean istSchaltJahr = true;

		// durch 4 teilbar?
		while (tmp - 4 >= 0)
		{
			tmp = tmp - 4;
		}

		if (tmp==0)
		{
			System.out.println("Ohne Division: Jahreszahl ist durch 4 Teilbar");
			istSchaltJahr = true;
		}
		else
		{
			System.out.println("Ohne Division: Jahreszahl ist nicht durch 4 Teilbar");
		}

		//durch 100 teilbar?
		tmp = jahr;
		while (tmp - 100 >= 0)
		{
			tmp = tmp - 100;
		}

		if (tmp==0)
		{
			System.out.println("Ohne Division: Jahreszahl ist durch 100 Teilbar");
			istSchaltJahr = false;
		}

		//durch 400 teilbar?
		tmp = jahr;
		while (tmp - 400 >= 0)
		{
			tmp = tmp - 400;
		}

		if (tmp==0)
		{
			System.out.println("Ohne Division: Jahreszahl ist durch 400 Teilbar");
			istSchaltJahr = true;
		}

		if (istSchaltJahr)
		{
			System.out.println("Ohne Division: Das Jahr " + jahr + " ist ein Schaltjahr");
		}
		else
		{
			System.out.println("Ohne Division: Das Jahr " + jahr + " ist kein Schaltjahr");
		}
	}
}


Besten Gruß,

Karlito
01.11.2017 10:51 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
InformatikJava12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wow. Gleich der ganze Codesmile

Vielen lieben Dank. smile Daumen hoch Daumen hoch Daumen hoch Daumen hoch Daumen hoch Wink Wink smile smile smile smile
01.11.2017 15:32
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Gewöhn dich nicht dran, war nur faul.

Gruß,

Karlito
01.11.2017 17:04 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
InformatikJava12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja klarsmile

Wenn ich mit der Klasse Scanner arbeite. Warum funktioniert das dann nicht. Schau mal hier:

code:
1:
2:
3:
4:
5:
6:
7:
import java.util.Scanner;
 public class Test{ 
public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 int jahr= scanner.nextInt(); 
mitDivision(jahr); 
ohneDivision(jahr); }
02.11.2017 15:38
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Was kommt denn für eine Fehlermeldung?

Gruß,

Karlito
03.11.2017 07:09 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
InformatikJava12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In der 4. Zeile bei scanner folgendes:

Ressource leak:"scanner" is never closed

Wie behebe ich das? verwirrt
03.11.2017 07:59
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das ist glaube nur eine Warnung.

Ansonsten sollte das hier helfen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
	public static void main(String[] args) { 

		Scanner scanner = new Scanner(System.in);
		int jahr= scanner.nextInt(); 
		scanner.close();
		mitDivision(jahr); 
		ohneDivision(jahr);
	}



Gruß,

Karlito
03.11.2017 10:17 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich würde hier wärmstens "try-with-resources" (seit Java 7 glaub ich) empfehlen. Das sähe dann etwa so aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
int jahr;
try(Scanner scanner = new Scanner(System.in)) {
    jahr= scanner.nextInt();
}
catch(FileNotFoundException e) { ... }

...


Gruß
Marco
03.11.2017 11:02 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
InformatikJava12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sowas hatten wir noch gar nicht. Kann ich auch Buffered reader verwenden, um das zu entgehen?
Wie kommt dieser Fehler zustande?
03.11.2017 12:03
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Der Fehler kommt zustande, weil Du scanner öffnest (wahrshceinlich schon mit new Scanner(...)), aber nicht schließt. Du musst also, nachdem du den int gelesen hast, scanner.close(); aufrufen.
Davon abgesehen ist es immernoch kein Fehler. Dein Code compiliert bei mir. Es ist nur ein Hinweis.

Gruß,

Karlito
03.11.2017 12:53 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
InformatikJava12
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dankesmile Es hat geklappt Daumen hoch smile
04.11.2017 09:51
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Schaltjahrberechnung