schaltjahr (gelöst zu 90 %), allerdings folgeprob :/

Status
Nicht offen für weitere Antworten.

Sb1980

Mitglied
hallo leute...

also ich hab hier ein projekt


"Schreiben Sie ein JAVA-Programm mit Testplan, das Folgendes tut:
Prüfen zweier eingelesener Kalenderdaten auf Gültigkeit. Die Eingabe erfolgt über ein
DOS-Fenster in der Komandozeile. Über diese ist ebenfalls anzustoßen und das
Ergebnis auszugeben:
1. Anzahl der Tage ab 1. Januar des jeweiligen Datums
2. Differenz der Kalenderdaten in Tagen
3. Anzahl der Werktage ab einem eingegebenen Datum bis zum Tagesdatum
Mögliche Daten: 1901 bis 2100, alle anderen gelten als ungültig.
Der 1.1.1901 war ein Dienstag.
Die Systemklasse Calendar ist nur zu benutzen, um das Tagesdatum einzulesen,
nicht zur Prüfung der eingebenen Daten.
Es muss mindestens zwei Klassen mit entsprechenden Methoden geben:
(1) Alle Operationen zu einem Datum mit den nötigen variablen Daten und
Konstanten.
(2) Die Operationen zu mehr als einem Datum mit Ein- und Ausgabe, also auch der
main-Methode."


so, also ich bin gerade bei der schaltjahrüberprüfung, das bekomme ich auch hin, kann zwar im moment nur das jahr eingeben und das wird dan überprüft, aber ich fux mich gerade mit dem stringtokenizer zurecht und ich denke dann kann ich auch das ganze datum mit dd.mm.yyyy eingeben. dann werde ich ne neue class schreiben müssen, welche das überprüfte datum als import übernimmt und dann mit diesen werten, die ausgaben die verlangt sind, erzeugt. nur da klinkt es bei mir völlig aus. hab schon zwei bücher durchgeackert, aber ich scheine wohl der absolute n00b zu bleiben auf dem gebiet.


vielleicht kann mir jemand den ein oder anderen tipp geben, wie man da unter umständen wieterkommt und wenn ihr bei mir asu der gegend kommt, sollt ihr von mir aus auch n paar ksten pils haben :/ bin echt voll verzweifelt...


thx und greetz

Sebbel
 

PoiSoN

Bekanntes Mitglied
Tse tse, bietet nen Pils an und schreibt nicht mal von wo er kommt :roll:

okay, wenns dir jetzt nur um die Übergabe geht, könnte das so aussehen:

Code:
class DeineKlasse 
{
  public static void main(String[] args)
  {
    // hier erstmal deine Berechnung, ob Datum gültig

    if (gueltigesDatum())
    {
      ausgabe(dasDatum);
    }
  }

  public void ausgabe(Date datum)
  {
    // Diese 3 Funktionen returnen jeweils nen String,
    // die dir die gewünschte Ausgabe liefern
    anzTage(datum);
    differenz(datum);
    anzWerktageBisHeute(datum);
  }  
}
Die 3 Funktionen könnten natürlich auch gleich in der main stehen, kA wie du's aufbauen willst...
 

Sb1980

Mitglied
oh hehe aus bielefeld komm i


also es geht nicht nur um die übergabe, sondern um ganze :oops: die 2.klasse, die dann für die berechnung der daten laufen soll...

das hab ich biser gemacht, ist wie gesagt noch nicht ganz komplett, aber irgendwie krieg ich das schon hin, wollte wie gesagt noch nen strintokenizer einbauen, damit ich nicht die eingabe mit leerzeichen machen muss und dann die werte mit den args aufzurucfen, sondern sie gleich umwandeln in int und dann den variablen zuweisen. das problem ist nur, ich peil das einfach nicht, wie ich den anderen mi** hinbekomme :autsch:

Code:
class DatumEinlesen {

public static final byte   tageImFeb = 28;
public static final int      maxiJahre = 2100;
public static final int      miniJahre = 1901;
public static final int      tageImJahr = 365;
public static final int[]Monate30Tage = {4, 6, 9, 11};
public static final int[]Monate31Tage = {1, 3, 5, 7, 8, 10, 12};





public static void main(String[] args) {
string  day,month,year;

// hier muss jetzt irgendwie der stringtokenizer noch mit rein
// sodaß er die einzelnen werte (day,year,month) den variablen (tag, monat, jahr übergibt, aber das ist nicht das prob   

	int jahr = Integer.parseInt(st.year);
                int monat = Integer.parseInt(st.month);
                int tag = Integer.parseInt(st.day)
	if( jahr < miniJahre , jahr > maxiJahre ) {
	    System.out.println("Ungültige Eingabe, bitte nur zwischen 1901 und 2100");
	} else {
	    if( jahr % 4 == 0 ) {
		if( jahr % 100 == 0 ) {
		    if( jahr % 400 == 0 ) {
			System.out.println("Schaltjahr!");
		    } else {
			System.out.println("Kein Schaltjahr!");
		    }
		} else {
		    System.out.println("Schaltjahr!");
		}
	    } else {
		System.out.println("Kein Schaltjahr!");
	    }
	}
    }
}
 

PoiSoN

Bekanntes Mitglied
Na Bi ist ja gleich nebenan :wink:

Sb1980 hat gesagt.:
also es geht nicht nur um die übergabe, sondern um ganze :oops: die 2.klasse, die dann für die berechnung der daten laufen soll...

[...] das problem ist nur, ich peil das einfach nicht, wie ich den anderen mi** hinbekomme :autsch:
Welchen anderen "Mist" meinst du?
Wie die Klasse aufgebaut ist?
Wie du die Methoden der anderen Klasse aus der main aufrufst?
Was in den Methoden selbst steht (also die Berechnungen im Einzelnen)?
Etwas konkreter musst du schon werden...
 

Sb1980

Mitglied
yeah genau, also quasi alle drei fragen, ich krieg die zweite klasse mit den methoden nicht hin, ich weiss nicht wie das weitergehen soll, als den code oben, hab ich gemacht und der rest fehlt mir halt noch :(

yeah gleich nebenan?
 

PoiSoN

Bekanntes Mitglied
Jo, so 30-40 mins.

Also. Erstmal noch was zu deiner Klasse DatumEinlesen... Klassenattribute sollten eigentlich private sein.

So... du erstellt noch ne zweite Klasse, nennst die z.B. class Berechnung, darein schreibst du die 3 Methoden,
also public String anzWerktageBisHeute(Date datum) usw. Wenn du sie static machst, kannst du sie jetzt in
deiner main mit Berechnung.anzWerktageBisHeute(deinGueltigesDatum) aufrufen.
Und wie man mit Datum rechnet: Benutz einfach mal die Forum-Suche, da gibts schon viele Beispiele...
 

Sb1980

Mitglied
yeah thx

ich werd mich dran machen und poste wie es gelaufen ist und dann gibts n pils oder 2 :)

thx schonmal
 

Sb1980

Mitglied
sodele, habs jetzt hinbekommen, muss nur noch die letzten zwei teilaufgaben machen...

allerdings hab ich die sache nicht allzu elegant gelöst, wie mir scheint, ausserdem sollte ich das in verschiedene klassen unterteilen.

vielleicht kann mir ja jemand n tipp geben, wie man das so n bisschen vereinfachte darstellen kann, bin halt n n00b :/

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

class Test12345 {
	
	
             
	public static    final             byte TageImMonat             = 31;                
                public static    final             byte MonateImJahr             = 12;
                public static    final             int MaxJahr                        = 2100;
                public static    final             int MinJahr                         = 1901;
                public static    final             int TageImJahr                   = 365;
                public static    final             int MonateMit31Tagen []      = {1, 3, 5, 7, 8, 10, 12};
                public static    final             int MonateMit30Tagen []      = {4, 6, 9, 11};
                public static    	        String	tag;
                public static                       String	monat;
                public static                       String	jahr;
                public static                       int TageFebruar                  =  28;   
	public static                        byte TageFebruar1    = 29;
                public static                       int allezahlen;
	public static                       int day, month, jahr1;
	public static boolean schaltjahr = false;
	
	
	
	public static void main (String [] args) throws IOException {
		// Useranweisung
		System.out.println("Bitte ein Datum im Format tt.mm.jjjj eingeben.");
		System.out.println("Das Datum wird in Tag, Monat und Jahr aufgesplittet und getrennt ausgegeben.");
		
		// einlesen des zusammenhaengenden Datums
		BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
		String s = br.readLine();
		
		// trennen von Tag, Monat und Jahr
		StringTokenizer st = new StringTokenizer(s,".");
	                 tag           =             (st.nextToken( ));
		int day = Integer.parseInt(tag);

		monat	=	(st.nextToken( ));
		int month = Integer.parseInt(monat);

		jahr	=	(st.nextToken( ));
		int jahr1 = Integer.parseInt(jahr);

		// Ausgabe der nun getrennten Werte
		System.out.println("Tag: " + day + "  Monat: " + month + "  Jahr: " + jahr1);




                 if( jahr1 < MinJahr ) {
	    System.out.println("Kein gueltiges Datum. Bitte nur Jahreszahlen zwischen einschliesslich 1901 und 2100");
	} else {
	if( jahr1> MaxJahr ) {
	    System.out.println("Kein gueltiges Datum. Bitte nur Jahreszahlen zwischen einschliesslich 1901 und 2100");
                   } else {
	    if( jahr1 % 4 == 0 ) {
		if( jahr1 % 100 == 0 ) {
		    if( jahr1 % 400 == 0 ) {
			System.out.println("Schaltjahr!");
	                                TageFebruar = TageFebruar +1;	    
                                                schaltjahr = true;		    
		    } else {
		    
		    
			System.out.println("Kein Schaltjahr!");
		              schaltjahr = false;
		              }
		
		} else {
		    System.out.println("Schaltjahr!");
                                    TageFebruar = TageFebruar+1;		
		     schaltjahr = true;     
		          }
		
	    } else {
		System.out.println("Kein Schaltjahr!");
		schaltjahr = false;
	              }
                         } 
	
	}


               if (month <= 00 ) {
	   System.out.println("Monat ist kleiner oder gleich null. Inkorrektes Format");

	        } else {
	        
	        if ( month>MonateImJahr ) {
	                    System.out.println("Monat ist groesser als 12. Inkorrektes Format");
                                    } else { 
                                      
                                    
                                    if (month == 2){
                                         if (schaltjahr = true) {
                                                 System.out.println("Februar mit " + TageFebruar +  " Tage" );
                                              if(day > TageFebruar){
                                                System.out.println("Ungueltiges Tagesformat, bitte aendern es ");
                                                }else{
                                                 if(day <= 0){
                                                  System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                    }
                                                }
                                             }

                                    }else{
                                    int moncheck = java.util.Arrays.binarySearch(MonateMit30Tagen, month);
                                            if (moncheck < 0) {
                                                 System.out.println("monat mit 31 tagen");
                                                    if (day <= 0){
                                                             System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                             }else{
                                                if (day > TageImMonat){
                                                                        System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                
                                                }
                                              }
                                              }else{
                                               System.out.println("monat mit 30 tagen");
                                               if (day <= 0){
                                                System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                }else{
                                                    if (day > TageImMonat + 1){
                                                                }else{
                                                                   System.out.println("Ungueltiges Tagesformat, bitte aendern");

                                                                }
                                               }
                                               }


                Calendar cal_1 = new GregorianCalendar( jahr1, 1, 1);
                Calendar cal_2 = new GregorianCalendar( jahr1,  month,  day);
                        long time = cal_2.getTime().getTime() - cal_1.getTime().getTime();
                        long days = Math.round( (double)time / (24. * 60.*60.*1000.) );     


                                System.out.println( "Zeit-Differenz in Tagen zum ersten Aufgabenteil : " + days );





}
}
}
}
}
 
B

bygones

Gast
arbeite schon bei der Eingabe mit Calendar - dann fallen einige überprüfungen weg, da du dass mit Calendar regeln kannst
 

Sb1980

Mitglied
hab ich auch schon gemacht... nur die überprüfungen darf ich nicht mit calendar machen, lt dieser beschissenen aufgabe

//edit

also ich hab jetzt mittlerweile rausgefunden, dass ich hier irgdnwas noch mit unterklassen machen soll.

der code müsste dann in etwa so aussehen, vielleicht kann ja jemand hier n kommentar zu abgeben? wäre superlieb

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

class Test12345 {
	

	  public static  final             byte TageImMonat            = 31;
                
                 public static final             byte MonateImJahr            = 12;
                   public static final             int MaxJahr                        = 2100;
                 public static final             int MinJahr                         = 1901;
                   public static final             int TageImJahr                   = 365;
                  public static final             int MonateMit31Tagen []    = {1, 3, 5, 7, 8, 10, 12};
                   public static final             int MonateMit30Tagen []    = {4, 6, 9, 11};
                    public static	          String	tag;
                     public static                String	monat;
                      public static             String	jahr;
                     public static                 int TageFebruar                  =  28;   
	     public static                  byte TageFebruar1              = 29;
                     public static             int allezahlen;
	      public static             int day, month, jahr1;
	      public static                boolean schaltjahr               = false;



class Einlesen extends Test12345{
            public void start

// und schon weider weiss ich hier nicht weiter
		








System.out.println("Bitte ein Datum im Format tt.mm.jjjj eingeben.");
		System.out.println("Das Datum wird in Tag, Monat und Jahr aufgesplittet und getrennt ausgegeben.");
		
		
		BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
		String s = br.readLine();
		
		
		StringTokenizer st = new StringTokenizer(s,".");
	                 tag.Konstanten           =             (st.nextToken( ));
		int day = Integer.parseInt(tag);

		monat	=	(st.nextToken( ));
		int month = Integer.parseInt(monat);

		jahr	=	(st.nextToken( ));
		int jahr1 = Integer.parseInt(jahr);

		
		System.out.println("Tag: " + day + "  Monat: " + month + "  Jahr: " + jahr1);

                             // ende einlesen des ersten datums







	class Schaltjahr extends Test12345

                 public void start 

// hier weiss ich nicht weiter nicht 
                 


           if( jahr1 < MinJahr ) {
	    System.out.println("Kein gueltiges Datum. Bitte nur Jahreszahlen zwischen einschliesslich 1901 und 2100");
	} else {
	if( jahr1> MaxJahr ) {
	    System.out.println("Kein gueltiges Datum. Bitte nur Jahreszahlen zwischen einschliesslich 1901 und 2100");
                   } else {
	    if( jahr1 % 4 == 0 ) {
		if( jahr1 % 100 == 0 ) {
		    if( jahr1 % 400 == 0 ) {
			System.out.println("Schaltjahr!");
	                                TageFebruar = TageFebruar +1;	    
                                                schaltjahr = true;		    
		    } else {
		    
		    
			System.out.println("Kein Schaltjahr!");
		              schaltjahr = false;
		              }
		
		} else {
		    System.out.println("Schaltjahr!");
                                    TageFebruar = TageFebruar+1;		
		     schaltjahr = true;     
		          }
		
	    } else {
		System.out.println("Kein Schaltjahr!");
		schaltjahr = false;
	              }
                         } 
	
	}
	// überprüfung, ob schaltjahr oder nicht


               if (month <= 00 ) {
	   System.out.println("Monat ist kleiner oder gleich null. Inkorrektes Format");

	        } else {
	        
	        if ( month>MonateImJahr ) {
	                    System.out.println("Monat ist groesser als 12. Inkorrektes Format");
                                    } else { 
                                      
                                    
                                    if (month == 2){
                                         if (schaltjahr = true) {
                                                 System.out.println("Februar mit " + TageFebruar +  " Tage" );
                                              if(day > TageFebruar){
                                                System.out.println("Ungueltiges Tagesformat, bitte aendern es ");
                                                }else{
                                                 if(day <= 0){
                                                  System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                    }
                                                }
                                             }

                                    }else{
                                    int monpruefziffer = java.util.Arrays.binarySearch(MonateMit30Tagen, month);
                                            if (monpruefziffer < 0) {
                                                 System.out.println("monat mit 31 tagen");
                                                    if (day <= 0){
                                                             System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                       }else{
                                                                 if (day > TageImMonat){
                                                                        System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                
                                                                 }
                                                          }
                                               }else{
                                               System.out.println("monat mit 30 tagen");
                                                    if (day <= 0){
                                                         System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                    }else{
                                                         if (day > TageImMonat + 1){
                                                                }else{
                                                                   System.out.println("Ungueltiges Tagesformat, bitte aendern");

                                                                         }
                                                             }
                                                }

                        //ende überprüfung, on korrektes datum
             

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


                // und hier muss ich jetzt irgendwie die ganzen unterklassen aufrufen?? :(
                
                
                
                Calendar cal_1 = new GregorianCalendar( jahr1, 1, 1);
                Calendar cal_2 = new GregorianCalendar( jahr1,  month,  day);
                        long time = cal_2.getTime().getTime() - cal_1.getTime().getTime();
                        long days = Math.round( (double)time / (24. * 60.*60.*1000.) );     


                                System.out.println( "Zeit-Differenz in Tagen zum ersten Aufgabenteil : " + days );





}
}
}
}
}
 :oops:  :oops:
 

PoiSoN

Bekanntes Mitglied
Du hast jetzt innerhalb der Klasse "Test12345" noch mehr Klassen gemacht?
Will dein Dozent vielleicht, dass du Methoden machst, nicht noch weitere Klassen?

Tjoa... und wenns unbedingt Klassen sein sollen... machst halt in Klasse "Schaltjahr"
z.B. ne Methode "pruefe(...)", dann kannst du sie in der main mit
Schaltjahr.pruefe(...) aufrufen usw.
(die Klassen stehen außerhalb von "Test12345")
 

Sb1980

Mitglied
jo, also er mäöchte, dass wir mindestens 2 klasssen machen in denen die methoden stehen, wie wir das aufteilen ist unsere sache, werd das aber mal versuchen, danke schonmal für den tipp, so langsam liften sich so manche geheimnisse ;)
 

Sb1980

Mitglied
jo leutz, also ich wende mich auch nur noch ein letztes mal an euch, dann geb ich es auf und schmeisse den kurs.

ich kbekomme es einfach nicht hin, unterklassen damit reinzubringen, bzw wenn ich meine ich hätte da was hinbekommen, dann sagt er mir, dass ich mit den variablen, die ich anscheinend übergeben will niht arbieten kann( ich weiss selber nicht wie diese scheiss übergabe überhaupt funktioniert) das ist alles sowas von frustrierend:(

help. i need somebody help :autsch:


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



class Test12345 {
	
	
             
	public static    final             byte TageImMonat            = 31;
                
                public static    final             byte MonateImJahr            = 12;
                public static    final             int MaxJahr                     = 2100;
                public static    final             int MinJahr                      = 1901;
                public static    final             int TageImJahr                = 365;
                public static    final             int MonateMit31Tagen []    = {1, 3, 5, 7, 8, 10, 12};
                public static    final             int MonateMit30Tagen []    = {4, 6, 9, 11};
                public static					   String tag,monat,jahr;
                public static                 int TageFebruar      =  28;   
	public static                        byte TageFebruar1    = 29;
                 public static                       int allezahlen;
	public static                       int day, month, jahr1;
	public static boolean schaltjahr = false;
	public static String tag1,monat2,jahr3;
	
	
	
	public static void main (String [] args){
	einlesen.eingabe(tag1,monat2,jahr3); // hier will ich jetzt die methode eingabe in class einlesen aufrufen  --->geht nicht... hier sollen zwei daten eigelesen werde, also dass ich jeweils die methode 2 mal aufrufe und dann die daten speichere. sie dann ´mit der der methode prue in class datum überprüfe und dann in calendar benutze		  

Calendar cal_1 = new GregorianCalendar( jahr1, 1, 1);
Calendar cal_2 = new GregorianCalendar( jahr1,  month,  day);
long time = cal_2.getTime().getTime() - cal_1.getTime().getTime();
long days = Math.round( (double)time / (24. * 60.*60.*1000.) );     


System.out.println( "Zeit-Differenz in Tagen zum ersten Aufgabenteil : " + days );





}
}//ende main



class einlesen extends Test12345 {

	
	public void eingabe(tag1,monat2,jahr3){ 

// hier klappt die parameterübergabe nicht, egal was ich da versuche, mag daran liegen, dass ich  aber auch so wirklich gar nicht verstehe, was ich in die klammern eingeben muss




//Useranweisung
System.out.println("Bitte ein Datum im Format tt.mm.jjjj eingeben.");
System.out.println("Das Datum wird in Tag, Monat und Jahr aufgesplittet und getrennt ausgegeben.");

//einlesen des zusammenhaengenden Datums
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
String s = br.readLine();

//trennen von Tag, Monat und Jahr
StringTokenizer st = new StringTokenizer(s,".");
          tag           =             (st.nextToken( ));
int day = Integer.parseInt(tag);

monat	=	(st.nextToken( ));
int month = Integer.parseInt(monat);

jahr	=	(st.nextToken( ));
int jahr1 = Integer.parseInt(jahr);

//Ausgabe der nun getrennten Werte
System.out.println("Tag: " + day + "Monat: " + month + "  Jahr: " + jahr1);
	}
}


class datum extends Test12345 {
	
	
	
	public void pruef(){

//hier klappt die paramterübergabe auch net
	
	if( jahr1 < MinJahr ) {
    System.out.println("Kein gueltiges Datum. Bitte nur Jahreszahlen zwischen einschliesslich 1901 und 2100");
} else {
if( jahr1> MaxJahr ) {
    System.out.println("Kein gueltiges Datum. Bitte nur Jahreszahlen zwischen einschliesslich 1901 und 2100");
               } else {
    if( jahr1 % 4 == 0 ) {
	if( jahr1 % 100 == 0 ) {
	    if( jahr1 % 400 == 0 ) {
		System.out.println("Schaltjahr!");
                                TageFebruar = TageFebruar +1;	    
                                            schaltjahr = true;		    
	    } else {
	    
	    
		System.out.println("Kein Schaltjahr!");
	              schaltjahr = false;
	              }
	
	} else {
	    System.out.println("Schaltjahr!");
                                TageFebruar = TageFebruar+1;		
	     schaltjahr = true;     
	          }
	
    } else {
	System.out.println("Kein Schaltjahr!");
	schaltjahr = false;
              }
                     } 

}


           if (month <= 00 ) {
   System.out.println("Monat ist kleiner oder gleich null. Inkorrektes Format");

        } else {
        
        if ( month>MonateImJahr ) {
                    System.out.println("Monat ist groesser als 12. Inkorrektes Format");
                                } else { 
                                  
                                
                                if (month == 2){
                                     if (schaltjahr = true) {
                                             System.out.println("Februar mit " + TageFebruar +  " Tage" );
                                          if(day > TageFebruar){
                                            System.out.println("Ungueltiges Tagesformat, bitte aendern es ");
                                            }else{
                                             if(day <= 0){
                                              System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                                }
                                            }
                                         }

                                }else{
                                int moncheck = java.util.Arrays.binarySearch(MonateMit30Tagen, month);
                                        if (moncheck < 0) {
                                             System.out.println("monat mit 31 tagen");
                                                if (day <= 0){
                                                         System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                         }else{
                                            if (day > TageImMonat){
                                                                    System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                            
                                            }
                                          }
                                          }else{
                                           System.out.println("monat mit 30 tagen");
                                           if (day <= 0){
                                            System.out.println("Ungueltiges Tagesformat, bitte aendern");
                                            }else{
                                                if (day > TageImMonat + 1){
                                                            }else{
                                                               System.out.println("Ungueltiges Tagesformat, bitte aendern");

                                                            }
                                            }
                                          }
                                }
                                }
        }
	

}
 

PoiSoN

Bekanntes Mitglied
Sb1980 hat gesagt.:
jo leutz, also ich wende mich auch nur noch ein letztes mal an euch, dann geb ich es auf und schmeisse den kurs.
Na na! So schnell wird hier nicht geschmissen, du stehst doch noch ganz am Anfang ;)

Sb1980 hat gesagt.:
ich kbekomme es einfach nicht hin, unterklassen damit reinzubringen, bzw wenn ich meine ich hätte da was hinbekommen, dann sagt er mir, dass ich mit den variablen, die ich anscheinend übergeben will niht arbieten kann( ich weiss selber nicht wie diese scheiss übergabe überhaupt funktioniert) das ist alles sowas von frustrierend:(
Dann lies weiter, ich versuchs mal zu verdeutlichen...

Sb1980 hat gesagt.:
Code:
class Test12345 {
                //...
	public static String tag1,monat2,jahr3;
	
	public static void main (String [] args)
                {
	    einlesen.eingabe(tag1,monat2,jahr3); 
                /* hier will ich jetzt die methode eingabe in class einlesen 
                aufrufen  --->geht nicht... hier sollen zwei daten eigelesen werde, also dass ich jeweils die methode 
                2 mal aufrufe und dann die daten speichere. sie dann ´mit der der methode prue in class datum 
                überprüfe und dann in calendar benutze */		  
                
                //...
    }
}//ende main
Das macht doch in zweierlei Hinsicht schonmal keinen Sinn:
1.) Du gibst deiner Methode "eingabe(...)" 3 Variablen, die überhaupt keinen Wert haben.
2.) Auch wenn die 3 Variablen einen Wert hätten: wozu würde deine Methode diese Werte als PARAMETER
benötigen? Gar nicht. Denn innerhalb der Methode speicherst du die Eingaben doch in ganz andere
Variablen (day, month und jahr1). Mit den Parametern hast du dort also überhaupt gar nichts gemacht
--> Folgerung: Die Methode benötigt keine Parameter.

BTW: Klassennamen sollten groß geschrieben werden...

Vielleicht wäre es sinnvoller gewesen, nicht 1 Methode "eingabe(...)" zu erstellen, sondern eher
liesTag(), liesMonat() und liesJahr(), die jeweils ein int returnen. Dann kannst du deine Methode
pruef() in der main mit datum.pruef(tag, monat, jahr) aufrufen. Etwa so...
Code:
class Test12345 
{
          //...

          public static void main (String [] args)
          {
               tag = Einlesen.liesTag();
               monat = Einlesen.liesMonat();
               jahr = Einlesen.liesJahr();

               Datum.pruef(tag,monat,jahr);

               //...
          }
}
Hoffe jetzt ist es ein bißchen klarer?
So, meine Wenigkeit geht jetzt schlafen... N8 ;)
 

Sb1980

Mitglied
juhuuuuu, ich habs geschafft. dake danke danke poison!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11 :D :D :D :D :D :D :D

jetzt hab ich nurnoch einletztes problem, wie berechne ich zwischen einem eingebenen datum und dem aktuellen datum, die werktage, dass sind dann nicht sieben, sondern 6 tage pro woche...also, wie ich den wohentag, des eingegebenen datums bestimmen kann, dass weiss ich schon
 

PoiSoN

Bekanntes Mitglied
Hab sowas zwar noch nicht gemacht, aber spontan würd mir jetzt einfallen, in ner Schleife, die
vom Startdatum bis zum Enddatum läuft, jeden einzelnen Tag abzuprüfen ob's ein Sonntag ist...
Wenn ja wird ein Zähler erhöht... Und am Ende kannst du dann die Anzahl der Sonntage von
der Gesamtzahl subtrahieren.

Hmm... wenn du das natürlich an irgend einer Stelle mal für 30 Jahre berechnen willst, muss
deine Schleife sich schon über 10.000 Einzeltage ansehen. Keine Ahnung wie sehr das den Rechner
belasten würde - ne schönere Lösung fällt mir da aber jetzt nicht ein.
 

Sb1980

Mitglied
meister, ich habs geschafft:) jippie!!!!!!!!!!!

hab das prob mit den werktagen, relativ elegant mit switch gelöst.

bei bedarf, poste ich den gesamten quellcode, wenn jemand anders mal diese probleme hat, mittlerweile kann ich mitfühlen;)


also nochmal super vielen dank und wenn ich was tun kann, dann sag einfach bescheid, bin zwar kein java pro, aber wenn es net zu schwer..


echt nochmal. vielen vielen dank!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :toll: :toll: :toll: :toll: :toll:
 

PoiSoN

Bekanntes Mitglied
Kein Prob ;)
Der Switch-Teil würd mich interessieren, kannst du den
mal posten?
Hast du das mit dein 30 Jahren (oder mehr) mal mit deiner
Methode ausprobiert? Was sagt die Auslastung?
 

Sb1980

Mitglied
also bei mir berechnet der das, in dem er guckt, welcher tag das eingegebene datum ist und zählt dan die tage bis zum nächsten sonntag, die ziehe ich von den gesagtmen tagen, zwischen dem eingegebenen datum, ab und teile den rest durch sieben und bekomme so die anzahl der sonntage bis zum aktuellen datum raus. dann neheme ich die komplette zeitspanne und dann ziehe ich davon alle sonntage ab

und dann, wenn das eingegebene datum größer ist, als das aktuelle, dann mact er das umgekehrt..

ölaufe also quasi nicht jeden tag durch

Code:
public static void aufgabenteil3(int jahr111, int monat111, int tag111){

 monat111=monat111 -1  ;
                Calendar cal_111 = new GregorianCalendar( jahr111,monat111 , tag111);
                Calendar cal_222 = new GregorianCalendar();
                long time = cal_222.getTime().getTime() - cal_111.getTime().getTime();
                long days11 = Math.round( (double)time / (24. * 60.*60.*1000.) );     
                days11=days11 -1;    
                if (days11 < 0 ) {
                     days11 = - days11;
                }else{ 
                    days11 = days11;}

System.out.println( "Tage vom ersten Datum bis zum heutigen Datum : " + days11 );


anzTageBisSo = 0;

if (time >0){



int c=(cal_111.get(GregorianCalendar.DAY_OF_WEEK)); 
switch (c) 
{ 
case GregorianCalendar.MONDAY: 

anzTageBisSo =6;
break; 

case GregorianCalendar.TUESDAY: 
 
anzTageBisSo =5;
break; 
case GregorianCalendar.WEDNESDAY: 

anzTageBisSo =4;
break; 
case GregorianCalendar.THURSDAY: 

anzTageBisSo =3;
break; 
case GregorianCalendar.FRIDAY: 

anzTageBisSo =2;
break; 
case GregorianCalendar.SATURDAY: 

anzTageBisSo =1;
break; 
case GregorianCalendar.SUNDAY: 

break; 
default: 
break; 
}
 
 
  Sonntage = ((days11 - anzTageBisSo) / 7) + 1;
               if( days11 < anzTageBisSo){
                   Sonntage = 0;}


 
 
               Werktage = days11 - Sonntage;
               System.out.println( "Werktage vom ersten Datum bis zum aktuellen Datum : " + Werktage);

   

                           

}else{

int d=(cal_222.get(GregorianCalendar.DAY_OF_WEEK)); 
switch (d) 
{ 
case GregorianCalendar.MONDAY: 

anzTageBisSo =6;
break; 

case GregorianCalendar.TUESDAY: 

anzTageBisSo =5;
break; 
case GregorianCalendar.WEDNESDAY: 

anzTageBisSo =4;
break; 
case GregorianCalendar.THURSDAY: 
 
anzTageBisSo =3;
break; 
case GregorianCalendar.FRIDAY: 

anzTageBisSo =2;
break; 
case GregorianCalendar.SATURDAY: 

anzTageBisSo =1;
break; 
case GregorianCalendar.SUNDAY: 

break; 
default: 
break; 
}
 
 
  Sonntage = ((days11 - anzTageBisSo) / 7) + 1;
               if( days11 < anzTageBisSo){
                   Sonntage = 0;}


               Werktage = days11 - Sonntage;
               System.out.println( "Werktage vom ersten Datum bis zum aktuellen Datum : " + Werktage);


}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
J Schaltjahr Java Basics - Anfänger-Themen 6
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
R Schaltjahr problem Java Basics - Anfänger-Themen 10
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
P Schaltjahr: "sauberer" Code Java Basics - Anfänger-Themen 4
C Schaltjahr Java Basics - Anfänger-Themen 4
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
B Schaltjahr überprüfen (Code) Java Basics - Anfänger-Themen 4
U Java Quellcode Schaltjahr Java Basics - Anfänger-Themen 13
G Schaltjahr Java Basics - Anfänger-Themen 6
W Schaltjahr abbrechen wenn <1583 Java Basics - Anfänger-Themen 11
W Schaltjahr Berechnung Java Basics - Anfänger-Themen 24
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14
P Erste Schritte [gelöst]Erzeugen einer Klasse aus der Klassenbibliothek Java Basics - Anfänger-Themen 4
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
X problem mit equals.gelöst Java Basics - Anfänger-Themen 2
N Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 7
M Ist diese Aufgabe zu umständlich gelöst? Java Basics - Anfänger-Themen 9
S Aufgabe gelöst, lässt sich aber nicht kompilieren Java Basics - Anfänger-Themen 3
J Vereinigung von 2 Mengen [gelöst] Java Basics - Anfänger-Themen 2
W ProcessBuilder Problem -->gelöst - - Jetzt JEditorPane Problem Java Basics - Anfänger-Themen 6
A [gelöst]Array mit ArrayList-Einträgen Java Basics - Anfänger-Themen 12
B While Schleife steuern (gelöst) Java Basics - Anfänger-Themen 2
Strahlungsleck [gelöst]File Pfadangabe funktioniert nicht mit Servername/IP Java Basics - Anfänger-Themen 2
A [gelöst]Aus der Klasse heraus auf ein anderes Objekt zugreifen Java Basics - Anfänger-Themen 4
A [gelöst]Zwei Ausgaben, die eigentlich gleich sein sollten Java Basics - Anfänger-Themen 9
A [gelöst]Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 9
A [gelöst]ArrayList Java Basics - Anfänger-Themen 6
Bloodredangel [gelöst] Kompilieren von .java-Dateien per javac Java Basics - Anfänger-Themen 5
J Aufgabenverteilung über einen Zeitraum: So geschickt gelöst? Java Basics - Anfänger-Themen 3
S [gelöst] Wie kann ich später über Objekte zeichnen Java Basics - Anfänger-Themen 2
D Probleme bei Code Portierung von C# nach Java [Gelöst] Java Basics - Anfänger-Themen 4
L [Gelöst:] positive Null Java Basics - Anfänger-Themen 4
L Gelöst: Negative Eingaben sollen verweigert werden Java Basics - Anfänger-Themen 3
L [Gelöst] Cannot make a static reference ... Java Basics - Anfänger-Themen 12
L [gelöst] Einfache Aufgabe, läuft aber nicht. Java Basics - Anfänger-Themen 8
vogella *Gelöst *Im Programm warten (wait()) Java Basics - Anfänger-Themen 2
S die konsole[gelöst] Java Basics - Anfänger-Themen 16
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben