tage ausrechnen

Status
Nicht offen für weitere Antworten.
U

unwissende

Gast
Hallo

Ich hoffe mir kann wer schnell helfen, bin schon am Verzweifeln...ich soll für ein Projekt verschiedene Klassen vervollständigen. Es geht im ganze darum das man das Alter eines Menschen in Tagen ausrechnen und dann mithilfe eines Testbed die einzelnen Klassen testen soll...Es gibt eine Klasse Month in der man die Länge des Monats festlegen soll. Das mit dem Schaltjahr hab ich schon aber wie mach ich das mit dem Rest? Kann ich da ein switch benutzen? Und wenn ja was ist dann mein break?
In der Klasse Date gibts dann drei Methoden wo ich auch nich mehr wirklich weiß was ich machen soll. In der einen soll man die Tage die bis zum eingegeben Datum vergangen sind berechnen lassen und die zweite ist so ähnlich nur man soll die Tage vom Datum bis zum Jahresende ausrechnen lassen. Und dann kommt meine "Lieblingsmethode"(null Ahnung)in der man die Differenz von zwei eingegebenen "Datum"(schreib mal nich Daten, wegen Verwechslung und so) ausrechnen lassen soll. Ich hab soviel ausprobiert das ich nu gar nichts mehr weiß und das was ich hatte, gelöscht hab :cry:
Wäre nett wenn sich jmd meiner erbarmen würde.
 
G

Guest

Gast
ok, hier ist die klasse month

Code:
import java.io.*;


public class Month {

     int year;
     int month;
     
     

    /**
     * Basic constructor accepting the month and year as int
     *
     * @param month the number of the month, January=1, ..., December=12
     * @param year  the integer representing the year
     */
    public Month(int month, int year) {
        
        this.month = month;
        this.year = year;
    }

    /** Methode zur allgemeinen BereichsŸberprŸfung.
     * Liegt der zu ŸberprŸfende Wert au§erhalb der vorgegebenen Grenzen, so wird
     * die untere Grenze als Standardwert des zulŠssigen Bereichs benutzt.
     * 
     * @param value zu ŸberprŸfender Wert
     * @param lowbound Untergrenze des zulŠssigen Bereichs
     * @param highbound Obergrenze des zulŠssigen Bereichs
     * @param attributname im Falle eines Fehlers auszugebende Attributbezeichnung
     * @return zulŠssiger Wert, ggf Standardwert
     */
    
    protected int checkInRange(int value, int lowbound, int highbound, String attributname){
        if (value < lowbound || value > highbound) {
            System.out.println("Fehlerhafte Eingabe fŸr Attribut" + attributname);
            System.out.println("Benutze Standardwert" + lowbound);
            return lowbound;
        }
        return value;
    }
    
    /**
     * sets the number of the month
     *
     * @param month the number of the month, January=1, ..., December=12
     */
    public void setMonth(int month) {
        
       this.month = (byte) checkInRange (month, 1, 12, "month");

    }

    /**
     * gets the number of the month
     *
     * @return month the number of the month, January=1, ..., December=12
     */
    public int getMonth() {
        
    return month;
    }

    /**
     * sets the number of the year
     *
     * @param year  the integer representing the year
     */
    public void setYear(int year) {
        
        this.year = year;
    }

    /**
     * gets the current year as a number
     *
     * @return the integer representing the year
     */
    public int getYear() {
        
        return year;
    }

    /**
     * Zur Berechnung der MonatslŠnge.
     * Im Feld sind die Tageszahlen angegeben.
     * FŸr den Februar gibt es keine konstante Tageszahl und wird deshalb mit 0 belegt und bei Bedarf
     * berechnet.
     */

    

    /**
     * calculates the number of days in the month
     *
     * @return the number of days in a month
     */
    
   private static final int [] daysInMonth = { 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //ich weiß so geht das nich
       
}

und das ist die Klasse Date

Code:
public class Date {

    int year;
    int month;
    int day;
    
    
    /** Methode zur allgemeinen BereichsŸberprŸfung.
     * Liegt der zu ŸberprŸfende Wert au§erhalb der vorgegebenen Grenzen, so wird
     * die untere Grenze als Standardwert des zulŠssigen Bereichs benutzt.
     * 
     * @param value zu ŸberprŸfender Wert
     * @param lowbound Untergrenze des zulŠssigen Bereichs
     * @param highbound Obergrenze des zulŠssigen Bereichs
     * @param attributname im Falle eines Fehlers auszugebende Attributbezeichnung
     * @return zulŠssiger Wert, ggf Standardwert
     */
    
    protected int checkInRange(int value, int lowbound, int highbound, String attributname){
        if (value < lowbound || value > highbound) {
            System.out.println("Fehlerhafte Eingabe fŸr Attribut" + attributname);
            System.out.println("Benutze Standardwert" + lowbound);
            return lowbound;
        }
        return value;
    }
    
    
    /**
     * Basic constructor accepting the day, month and year as int
     *
     * @param day the number of the day within the month
     * @param month the number of the month, January=1, ..., December=12
     * @param year  the integer representing the year
     */
    public Date(int day, int month, int year) {
        
        this.day = day;
        this.month = month;
        this.year = year;
    }

    /**
     * constructor accepting a Date to be copied
     *
     * @param date the date to be used for initialization
     */
    public Date(Date date) {
        
        day = date.day;
        month = date.month;
        year = date.year;
        date = new Date(day, month, year);

    }

    /**
     * sets the number of the day, month and year
     *
     * @param day the number of the day within the month
     * @param month the number of the month, January=1, ..., December=12
     * @param year  the integer representing the year
     */
    public void setDate(int day, int month, int year) {
        
    setYear(year);
    setMonth(month);
    setDay(day);
    
      
    }

    /**
     * sets the number of the day
     *
     * @param day the number of the day within the month
     */
    public void setDay(int day) {
        
    if (getMonth() == 2) {
       this.day = (byte) checkInRange(day, 1, isLeapYear()? 29:28,"day");
    }
    else {
        this.day = (byte) checkInRange(day, 1, daysInMonth[getMonth()-1], "day");
    }
}

    /**
     * gets the number of the day
     *
     * @return day the number of the day within the month
     */
    public int getDay() {
        
        return day;
    }

    /**
     * sets the number of the month
     *
     * @param month the number of the month, January=1, ..., December=12
     */
    public void setMonth(int month) {
        
        this.month = (byte) checkInRange (month, 1, 12, "month");
    }

    /**
     * gets the number of the month
     *
     * @return month the number of the month, January=1, ..., December=12
     */
    public int getMonth() {
        
        return month;
    }

    /**
     * sets the number of the year
     *
     * @param year  the integer representing the year
     */
    public void setYear(int year) {
        
        this.year = year;
    }

    /**
     * gets the current year as a number
     *
     * @return the integer representing the year
     */
    public int getYear() {
        
        return year;
    }

    /**
     * tests whether current date is a valid date
     *
     * @return [b]true[/b] if date is valid, [b]false[/b]otherwise
     */
    public boolean isValidDate() {

    if ( day < 1 || day > 31 || month < 1 || month > 12 || year < 0)
        return false;
    if ( month == 4 || month == 6 || month == 9 || month == 11)
        if ( day > 30)
        return false;
    if ( month == 2)
        if ( day >= 30 || ( day == 29 && ! isLeapYear()))
        return false;
    
    return true;

    }

    /**
     * calculates the number of days passed in the year
     * up to, but not including, the current date
     *
     * @return the number of days in the year sofar and 0 for invalid dates
     */
    public int passedDaysInYear(){
            
     }

    /**
     * calculates the number of days remaining in the year
     * not including the current date
     *
     * @return the number of days in the year still to go
     * and 0 for invalid dates
     */
    public int remainingDaysInYear(int eingabe) {
       
      day = (day + 1) + (month - day) + (year - month); //war nur nen Gedankengang weiß das es so nicht läuft
        
      return ((eingabe + 1) + (month - day) + (year - month)) ; 
    
               
    }

    /**
     * calculate the number of days between the date and the argument date
     *
     * @return the number of days between both dates
     */
    public int daysBetween(Date date) {
        
        int diff;
        day = date.day;
        month = date.month;
        year = date.year;
        
        diff = (day - date.day) + (month - date.month) + (year - date.year);
       
       return diff ;
        
        
    }
    /**
     * tests whether the year is a leap year
     *
     * @return [b]true[/b] if year is a leap year, [b]false[/b]otherwise
     */
    public boolean isLeapYear() {
        /* a year is a leap year
         * - if it can be divided by 4
         * - unless it is a century that cannot be divided by 400
         */
        
                return year % 4 == 0 
                    && ( year % 100 != 0 || year % 400 == 0);
    }

     /**
     * calculates the number of days in the month
     *
     * @return the number of days in a month
     */
    
   public static final int [] daysInMonth = { 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
}
 
U

unwissende

Gast
ich brauch wirklich hilfe, wenigstens ein paar tipps, bitte :(
 

Fuzzy

Mitglied
Die folgende statischen Methoden dürften Dir vielleicht helfen. Einfach in die Klasse Date mit einklinken und benutzen...

Code:
    private static boolean leapYear(int year) {
    	return year % 4 == 0
        	&& ( year % 100 != 0 || year % 400 == 0);
    }
    
    private static int daysPerYear(int year) {
    	return leapYear(year) ? 366 : 365;
    }
    
    private static int daysPerMonth(int month, int year) {
    	if (month != 2)
    		return daysInMonth[month-1];
    	if (leapYear(year))
    		return 29;
    	else
    		return 28;
    }

    private static int passedDaysInYear(int day, int month, int year) {
    	int resultDay = day;
    	for (int currentMonth = 1; currentMonth < month; currentMonth++)
    		resultDay += daysPerMonth(currentMonth, year);
    	return resultDay - 1;
    }

    private static int passedDaysInYear(Date d) {
    	return passedDaysInYear(d.day, d.month, d.year);
    }
    
    private static int remainingDaysInYear(int day, int month, int year) {
    	return daysPerYear(year) - passedDaysInYear(day, month, year) - 1; 
    }

    private static int remainingDaysInYear(Date d) {
    	return remainingDaysInYear(d.day, d.month, d.year);
    }
   
    private static int daysBetween(Date d1, Date d2)
    {
    	// if the years differ, make sure that d1 > d2
    	if (d1.year < d2.year)
    		return -daysBetween(d2, d1);
    	// we look for the days between (not including the first and the last day)
    	if (d1.year == d2.year) {
    		int difDays = passedDaysInYear(d1) - passedDaysInYear(d2);
    		if (difDays > 0)
    			return difDays - 1;
    		else
    			return difDays + 1;
    	}
    	int difference = remainingDaysInYear(d2) + passedDaysInYear(d1);
    	for (int intermediateYear = d2.year+1; intermediateYear < d1.year; intermediateYear++)
    		difference += daysPerYear(intermediateYear);
    	return difference;
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Stunden/Tage Countdown Java Basics - Anfänger-Themen 9
sserio Gregorianischer Kalender und dessen Tage. Java Basics - Anfänger-Themen 14
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
M Rekursion Tage Ansteckung gesamte Bevölkerung Java Basics - Anfänger-Themen 15
B Anzahl von Stunden / Tage von zwei Datumswerten ermitteln Java Basics - Anfänger-Themen 1
M Wochentag ermittel und ggf tage abziehen Java Basics - Anfänger-Themen 4
Bluedaishi Einen Betrag X auf X Tage verteilen Java Basics - Anfänger-Themen 14
H Datentypen Tage zwischen zwei Datums berechnen Java Basics - Anfänger-Themen 4
T Jahre, Monate, Tage, Stunden, Minuten Java Basics - Anfänger-Themen 1
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6
F Für Abgabe vor Feiertagen 3 Tage für Abholung hinzuaddieren Java Basics - Anfänger-Themen 19
S Ein Jahr hat 363,7 Tage ? Java Basics - Anfänger-Themen 2
S Methoden Tage zwischen 2 Daten Java Basics - Anfänger-Themen 19
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
G maximale Anzahl der Tage im Monat Java Basics - Anfänger-Themen 18
R Tage subtrahieren von einem Date() Java Basics - Anfänger-Themen 6
A GregorianCalendar heute + X Tage Java Basics - Anfänger-Themen 11
S Tage aus zwei Datumsangaben berechnen Java Basics - Anfänger-Themen 3
T Tage Zahlen zuordnen Java Basics - Anfänger-Themen 24
T tage in monate und jahre Java Basics - Anfänger-Themen 9
H Dates "Tage" auf gleichheit prüfen? Java Basics - Anfänger-Themen 4
H Anzahl der Tage von Monat ausgeben Java Basics - Anfänger-Themen 7
N Tage in Jahre, Monate umrechnen Java Basics - Anfänger-Themen 1
B Errechnen(Jahre Monate Tage)von einem Datum zu einem anderen Java Basics - Anfänger-Themen 3
A Verständnisfrage Sekunden/Tage Umrechnung Java Basics - Anfänger-Themen 3
I Tage ermitteln Java Basics - Anfänger-Themen 4
G Altersberechnung falsch auf 1-2 Tage Java Basics - Anfänger-Themen 3
DStrohma Millisekunden umwandeln in Jahre, Monate, Tage, Stunden Java Basics - Anfänger-Themen 5
G Differenz in Tage Java Basics - Anfänger-Themen 3
T Bestimmte Tage ausschließen Java Basics - Anfänger-Themen 6
T Datum+ 100 Tage Java Basics - Anfänger-Themen 23
M wieviele Tage der Monat X hat Java Basics - Anfänger-Themen 2
S zu einem Datum Tage addieren Java Basics - Anfänger-Themen 2
W Tage im Monat Java Basics - Anfänger-Themen 3
S Calendar.set Time, Ermittlung der Anzahl Tage fehlerhaft Java Basics - Anfänger-Themen 9
X 14-Tage Testversion erstellen? Java Basics - Anfänger-Themen 15
G HILFE!!! JEDER MONAT HAT 31 TAGE Java Basics - Anfänger-Themen 2
J Datum, Tage herausfinden Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
Leo_1789 Differenz ausrechnen zwischen denn idealgewicht und denn echten Gewicht Java Basics - Anfänger-Themen 7
D Restguthaben ausrechnen Java Basics - Anfänger-Themen 4
F Potenz ausrechnen Hilfe! Java Basics - Anfänger-Themen 7
D Gebühr ausrechnen [Buchaufgabe] Java Basics - Anfänger-Themen 9
C Rechenaufgabe im JLabel ausrechnen Java Basics - Anfänger-Themen 2
B Variablen im Java-Code selber "ausrechnen" Java Basics - Anfänger-Themen 8
C Konvertierung per Hand ausrechnen Java Basics - Anfänger-Themen 8
C Variablen Array dynamisch halten und ausrechnen Java Basics - Anfänger-Themen 14
N alter mit Date ausrechnen Java Basics - Anfänger-Themen 10
StrikeTom Median ausrechnen Java Basics - Anfänger-Themen 3
D Rest ausrechnen Java Basics - Anfänger-Themen 2
K Datentypen Prozent ausrechnen, Probleme Java Basics - Anfänger-Themen 9
K BMI ausrechnen Java Basics - Anfänger-Themen 20
B Taschenrechner - Aufgabenstring umwandeln und ausrechnen Java Basics - Anfänger-Themen 6
C String "ausrechnen" Java Basics - Anfänger-Themen 6
C Mausklicks pro Minute ausrechnen Java Basics - Anfänger-Themen 12
M Gleichungen dynamisch erstellen und ausrechnen? Java Basics - Anfänger-Themen 8
P Farbwertanteile ausrechnen! geht so nich ganz Java Basics - Anfänger-Themen 2
D BreitenGrad ausrechnen Java Basics - Anfänger-Themen 13
G automatisch ausrechnen Java Basics - Anfänger-Themen 3
B Formel in Textfeld ausrechnen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben