Ich raff zwar null von java aber ich denke ich habe einen schreibfehler gefunden.Original von Kermit
Ich habe fertig:
import java.io.*;
import java.text.*;
import java.util.*;
class Datum {
public static int tage[] = new int[3];
public static int tagesdatum[] = new int[3];
public static int datum[][] = new int[2][3];
public static int month[][] = new int[3][12];
void einlesenDatum() throws IOException {
int i;
int z=0;
do {
month[z][0]=31; month[z][1]=28; month[z][2]=31; month[z][3]=30; month[z][4]=31; month[z][5]=30;
month[z][6]=31; month[z][7]=31; month[z][8]=30; month[z][9]=31; month[z][10]=30; month[z][11]=31;
int l = z+1;
BufferedReader dt =
new BufferedReader ( new InputStreamReader (System.in) );
do {
System.out.println("\nBitte das Jahr des "+l+". Datums zwischen 1901 und 2100 eingeben:");
datum[z][2] = Integer.parseInt (dt.readLine());
} while (datum[z][2] <1901 || datum[z][2] >2100);
if (datum[z][2]%400 == 0){
month[z][1]=29;
} else if (datum[z][2]%4 == 0 && datum[z][2]%100 != 0) {
month[z][1]=29;}
do {
System.out.println("\nBitte den Monat des "+l+". Datums zwischen 1 und 12 eingeben:");
datum[z][1] = Integer.parseInt (dt.readLine());
datum[z][1]--;
} while (datum[z][1] <0 || datum[z][1] >11);
do {
i = datum[z][1];
System.out.println("\nBitte den Tag des "+l+".Datums eingeben:");
System.out.println("(bei ungueltiger Eingabe bitte erneut versuchen)");
datum[z][0] = Integer.parseInt (dt.readLine());
} while (datum[z][0]<1|| datum[z][0]>month[z][i]);
System.out.print("\nDas "+l+". Datum lautet: "+datum[z][0]+".");
System.out.println(datum[z][1]+1+"."+datum[z][2]);
z=z+1;
} while (z<2);
}
void tagesdatum() throws IOException {
month[2][0]=31; month[2][1]=28; month[2][2]=31; month[2][3]=30; month[2][4]=31; month[2][5]=30;
month[2][6]=31; month[2][7]=31; month[2][8]=30; month[2][9]=31; month[2][10]=30; month[2][11]=31;
GregorianCalendar kal = new GregorianCalendar();
tagesdatum[0] = kal.get(GregorianCalendar.DATE);
tagesdatum[1] = kal.get(GregorianCalendar.MONTH);
tagesdatum[2] = kal.get(GregorianCalendar.YEAR);
if (tagesdatum[2]%400 == 0){
month[2][1]=29;
} else if (tagesdatum[2]%4 == 0 && tagesdatum[2]%100 != 0) {
month[2][1]=29;}
}
void tageberechnen() throws IOException {
int z=0;
for (int p=2 ;z<p; z++){
for (int i=0; i<datum[z][1]; i++)
{ tage[z] += month[z][i]; }
tage[z] += datum[z][0]-1;
System.out.println("\nDie Differenz vom 1.1."+datum[z][2]+" bis zum "+datum[z][0]+"."
+(datum[z][1]+1)+"."+datum[z][2]+" betraegt: "+tage[z]+" Tage");
}
for (int i=0; i<tagesdatum[1]; i++)
{tage[2] += month[2][i];}
tage[2] += tagesdatum[0]-1;
}
}
public class Aufgabe extends Datum {
public static int differenz;
public static int werktage[] = new int[2];
void differenzdaten() throws IOException {
int i=0,z=0,t=0;
if (datum[0][2]<datum[1][2]){
i=datum[0][2];
t=-tage[0]+tage[1];}
else if (datum[0][2]>datum[1][2]){
i=datum[1][2];
t=tage[0]-tage[1]; }
else {
if (tage[0]<tage[1]){
i=datum[0][2];
t=tage[1]-tage[0];}
else{
i=datum[0][2];
t=tage[0]-tage[1];}}
for (int p=datum[0][2]+datum[1][2]-i; i<p; i++){
if (i%400==0){
z=366;
} else if (i%4==0&&i%100!=0){
z=366;
} else {
z=365;
}
differenz=differenz+z;
}
differenz=differenz+t;
System.out.println("\nDie Differenz zuwischen den beiden eingegebenen Daten betraegt "+differenz+" Tage");
}
// Beachte: Mit dem folgenden Abschnitt lässt sich auch der jeweilige Wochentag anzeigen,
// da das bei dieser Art der Aufgabenlösung quasi mit abgefallen ist.
// Um der Aufgabenstellung genüge zu tun, habe ich die enstprechenden Prints "Stillgelegt".
void differenztag() throws IOException {
int i=2,y=0;
String wt = "";
int anzwt[] = new int[3];
int u[] = new int[3];
for (int z=0; z<i; z++){
int p=0;
for (int j=1901; j<datum[z][2]; j++){
if (j%400==0){
y=366;
} else if (j%4==0&&j%100!=0){
y=366;
} else {
y=365;
}
p=p+y;}
u[z]=u[z]+p+tage[z];}
int h=0,p=0;
for (int j=1901; j<tagesdatum[2]; j++){
if (j%400==0){
y=366;
} else if (j%4==0&&j%100!=0){
y=366;
} else {
y=365;
}
p=p+y;
u[2]=p+tage[2];}
for (int z=0; z<3; z++){
if (u[z]%7==0){
wt="Dienstag";
anzwt[z]=u[z]/7*6;
}else if (u[z]%7==6){
wt="Montag";
anzwt[z]=u[z]/7*6+u[z]%7;
}else if (u[z]%7==5){
wt="Sonntag";
anzwt[z]=u[z]/7*6+u[z]%7;
}else if (u[z]%7==4){
wt="Samstag";
anzwt[z]=u[z]/7*6+u[z]%7;
}else if (u[z]%7==3){
wt="Freitag";
anzwt[z]=u[z]/7*6+u[z]%7;
}else if (u[z]%7==2){
wt="Donnerstag";
anzwt[z]=u[z]/7*6+u[z]%7;
}else if (u[z]%7==1){
wt="Mittwoch";
anzwt[z]=u[z]/7*6+u[z]%7;}
//System.out.println("\nDer Wochentag des "+(z+1)+". Datums ist ein "+wt);
//System.out.println("\nDie Anzahl der Werktage ab 1.1.1901 bis zum "+(z+1)+". Datums betraegt "+anzwt[z]);
}
for (int e=0; e<2; e++){
if (anzwt[e]<anzwt[2]){
werktage[e]=anzwt[2]-anzwt[e];}
else {
werktage[e]=anzwt[e]-anzwt[2];}
System.out.println("\nDie Anzahl an Werktagen zwischen dem "+(e+1)+". Datum und heute betraegt "+werktage[e]);}
}
public static void main(String[] args) throws IOException {
Datum a = new Datum();
a.einlesenDatum();
a.tagesdatum();
a.tageberechnen();
Aufgabe b = new Aufgabe();
b.differenzdaten();
b.differenztag();
}
}
Ich weiß nicht schön, aber selten
Der Ergebnis passt jedenfalls....
Danke Chris für Deine HilfeIch weiß das zu sehr zu schätzen!
Aber ansonsten respekt!
Ergebnis 1 bis 20 von 27
Thema: Java Programmierer hier?
Hybrid-Darstellung
-
13.12.2007, 11:49 #1An diesem Tisch wird nicht gelogen!
Beste, Ben
Ähnliche Themen
-
Editor - Java
Von weyli im Forum Off TopicAntworten: 5Letzter Beitrag: 06.05.2010, 11:34 -
Hats hier Programmierer?
Von Donluigi im Forum Off TopicAntworten: 0Letzter Beitrag: 11.08.2009, 22:24 -
Java
Von Okatu im Forum Off TopicAntworten: 3Letzter Beitrag: 22.09.2005, 15:14






Ich weiß das zu sehr zu schätzen!
Zitieren
Lesezeichen