Elemente in eine Reihe - wie

MrPink1986

Grünschnabel
Moin,
ich habe folgendes Problem, und zwar:
Ich muss die Wochentage anzeigen lassen, auf die am häufigsten bzw. am seltensten ein 13. eines Monats fällt. Hierzu habe ich schon die Häufigkeit berechnet im Zeitraum von 400 Jahren (2001-2400). Mir fehlt jetzt nur noch die Berechnung des Maximum bzw. Minimum...

Muss/kann ich das mit einer Reihe machen?
Wenn ja, wie bekomme ich die Wochentage in eine Reihe und wie kann ich das Maximum bzw. Minimum anzeigen lassen?
Wenn mehrere Tage gleich häufig sind, wie kann ich das anzeigen lassen?

Hilfeee!!

Hier mal das bisher erreichte:



Code:
import java.util.Calendar;
import java.io.*;

public class Aufgabe4
{
public static void main(String[] args)
throws IOException
{

int sonntag = 0, montag = 0, dienstag = 0, mittwoch = 0, donnerstag = 0, freitag = 0, samstag = 0;
	
for (int jahr=2001; jahr<=2400; jahr++)
{
for (int monat=1; monat<=12; monat++)
{
Calendar cal = Calendar.getInstance ();
int wochentag;

cal.set (jahr, monat -1, 13);
wochentag = cal.get (Calendar.DAY_OF_WEEK);


	if (wochentag == 1)
		sonntag++;
else
	if (wochentag == 2)
		montag++;
else
	if (wochentag == 3)
		dienstag++;   
else
	if (wochentag == 4)
		mittwoch++;
else
	if (wochentag == 5)
		donnerstag++;
else
	if (wochentag == 6)
		freitag++;
else
	if (wochentag == 7)
		samstag++;   
}

}

// (1) die Häufigkeit für jeden der sieben Wochentage, mit der ein Dreizehnter auf ihn fällt:

System.out.println ("Im Zeitraum von 2001 bis 2400 fällt der 13. des Monats");
System.out.println (sonntag + " Mal auf einen Sonntag,");
System.out.println (montag + " Mal auf einen Montag,");
System.out.println (dienstag + " Mal auf einen Dienstag,");
System.out.println (mittwoch + " Mal auf einen Mittwoch,");
System.out.println (donnerstag + " Mal auf einen Donnerstag,");
System.out.println (freitag + " Mal auf einen Freitag,");
System.out.println (samstag + " Mal auf einen Samstag.");


// (2) Wochentag(e) auf die am häufigsten ein Dreizehnter fällt:


// (3) Wochentag(e) auf die am seltensten ein Dreizehnter fällt:


// (4) Differenz zwischen kleinster und größter Häufigkeit:

// System.out.println ("Differenz zwischen kleinster und größter Häufigkeit: " + (minimum-maximum));


// (5) die Summe aller Häufigkeiten:

System.out.println ("Summe aller Häufigkeiten: " + (sonntag+montag+dienstag+mittwoch+donnerstag+freitag+samstag));

}
}


Vielen Dank für eure Hilfe!
 
hi,

ich glaube Du willst sortieren!? Such mal bei google nach Bubble bzw. Quicksort, sind beides elementare sortier Funktionen und rel. leicht zu implementieren....dann ist auch gleich min und max klar

hmf
 
Kleine Anmerkung:

Eine Switch-Case Konstruktion ist vielleicht ein bischen übersichtlicher als das if-else Monster! ^^
 
noch einfacher wäre es statt pro Wochentag eine Variable ein Array zu nutzen

zb.
Code:
int[] days = new Int[7];
days[cal.get (Calendar.DAY_OF_WEEK)-1]++;

hmf
 
In eine Reihe kriegst du es mit print statt println (Print-Line, also mit Zeilenumbruch).

Maximum und Minimum sind tatsächlich am einfachsten zu ermitteln wenn du das Ergebnis in ein Array schreibst. Dann kannst du schön einfach in einer for-Schleife drüber iterieren und vergleichst den aktuellen Wert mit dem aktuellen größten/kleinsten. Ist der aktuelle Wert der größte/kleinte so überschreibst du das aktuelle Maximum/Minimum und merkst die dafür den Index an dem du dich aktuell im Array befindest.
 
Zurück