E
ek 34
Mitglied
- Dabei seit
- 13.01.2012
- Beiträge
- 5
- Reaktionspunkte
- 0
Hey Leute..
ich hab hier ein programm was nach diesen angaben erstellen sollte..
Leider konnte ich es nicht so gut,besser gesagt lief das programm nicht
was ich geschrieben hatte und habe es dann von ein kumpel genommen..
nun muss ich das programm erklären können aber da ich es nicht selbst geschrieben habe fällt es mir schwer nachvoll zu ziehen..und der kumpel hat es auch von anderem genommen und ist mir auch keine hilfe..
ich wäre euch echt danke wenn ihr es einiger massen mir erklären könntet.
-------------------------------------------------------------------------
Schreiben Sie ein Programm,das ein Datum entsprechend der folgenden Syntax erkennt.
Datum =Tag"."Monat"."Jahr.
Tag =[1|2|3]Ziffer.
Monat =[1]Ziffer.
Jahr =Ziffer Ziffer Ziffer Ziffer.
Ziffer = 0|1|2|3|4|5|6|7|8|9.
DieAnalyse soll mit einem Deterministischen Endlichen Automaten (DEA) erfolgen.Die dazugehörige Klasse (Datumsanalyse) soll die folgenden Methoden enthalten.
Datumsanalyse (String Zeichenkette);
boolean run(); //soll sagen ob die zeichenkette syntaktisch korrekt ist
int tag();
int monat();
int jahr();
Die letzten 3 Methoden können einen beliebigen Wert zurückgebn,falls entweder run() noch nicht aufgerufen wurde oder run() den Wert false zurück gibt.
Entwerfe einen Satz von Testfällen die die Klasse Datums analyse systematisch testen.Die Tests sollen on einem eigenen Testprogramm ausgeführt werden,das mögliche fehler entprechend meldet.
-------------------------------------------------------------------------
ich hab hier ein programm was nach diesen angaben erstellen sollte..
Leider konnte ich es nicht so gut,besser gesagt lief das programm nicht
was ich geschrieben hatte und habe es dann von ein kumpel genommen..
nun muss ich das programm erklären können aber da ich es nicht selbst geschrieben habe fällt es mir schwer nachvoll zu ziehen..und der kumpel hat es auch von anderem genommen und ist mir auch keine hilfe..
ich wäre euch echt danke wenn ihr es einiger massen mir erklären könntet.
-------------------------------------------------------------------------
Schreiben Sie ein Programm,das ein Datum entsprechend der folgenden Syntax erkennt.
Datum =Tag"."Monat"."Jahr.
Tag =[1|2|3]Ziffer.
Monat =[1]Ziffer.
Jahr =Ziffer Ziffer Ziffer Ziffer.
Ziffer = 0|1|2|3|4|5|6|7|8|9.
DieAnalyse soll mit einem Deterministischen Endlichen Automaten (DEA) erfolgen.Die dazugehörige Klasse (Datumsanalyse) soll die folgenden Methoden enthalten.
Datumsanalyse (String Zeichenkette);
boolean run(); //soll sagen ob die zeichenkette syntaktisch korrekt ist
int tag();
int monat();
int jahr();
Die letzten 3 Methoden können einen beliebigen Wert zurückgebn,falls entweder run() noch nicht aufgerufen wurde oder run() den Wert false zurück gibt.
Entwerfe einen Satz von Testfällen die die Klasse Datums analyse systematisch testen.Die Tests sollen on einem eigenen Testprogramm ausgeführt werden,das mögliche fehler entprechend meldet.
-------------------------------------------------------------------------
Code:
package datumsanalyse;
public class Datumsanalyse {
private String Datum;
private String[] test;
private boolean Datumistrichtig;
private boolean Tagistrichtig;
private boolean Monatistrichtig;
private boolean Jahristrichtig;
private int i;
private int pos = 0;
/**
* Konstruktor der Klasse Datumsanalyse
* @param zeichenkette
*/
public Datumsanalyse(String Zeichenkette) {
Datum = Zeichenkette;
}
/**
* Überprüft das eingegebene Datum auf seine syntaktische
* Richtigkeit
* @return true bei Richtigkeit, false bei Fehler
*/
public boolean run() {
test = Datum.split("\\.");
Datumistrichtig = true;
Tagistrichtig = true;
Monatistrichtig = true;
Jahristrichtig = true;
//tag
switch (Datum.charAt(0)) {
case '0':
if (Datum.charAt(1) != '.') {
Tagistrichtig = false;
} else {
pos++;
}
break;
case '1':
if (Datum.charAt(1) == '.') {
pos++;
}
break;
case '2':
if (Datum.charAt(1) == '.') {
pos++;
}
break;
case '3':
if (Datum.charAt(1) == '.') {
pos++;
}
break;
case '4':
if (Datum.charAt(1) != '.') {
Tagistrichtig = false;
} else {
pos++;
}
break;
case '5':
if (Datum.charAt(1) != '.') {
Tagistrichtig = false;
} else {
pos++;
}
break;
case '6':
if (Datum.charAt(1) != '.') {
Tagistrichtig = false;
} else {
pos++;
}
break;
case '7':
if (Datum.charAt(1) != '.') {
Tagistrichtig = false;
} else {
pos++;
}
break;
case '8':
if (Datum.charAt(1) != '.') {
Tagistrichtig = false;
} else {
pos++;
}
break;
case '9':
if (Datum.charAt(1) != '.') {
Tagistrichtig = false;
} else {
pos++;
}
break;
default:
Tagistrichtig = false;
}
//tag
switch (Datum.charAt(1)) {
case '0':
break;
case '1':
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
break;
case '6':
break;
case '7':
break;
case '8':
break;
case '9':
break;
case '.':
break;
default:
Tagistrichtig = false;
}
if (Tagistrichtig == true) {
//monat
switch (Datum.charAt(3 - pos)) {
case '0':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '1':
switch (Datum.charAt(4 - pos)) {
case '0':
break;
case '1':
break;
case '2':
break;
case '.':
pos++;
break;
default:
Monatistrichtig = false;
break;
}
break;
case '2':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '3':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '4':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '5':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '6':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '7':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '8':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
case '9':
if (Datum.charAt(4 - pos) != '.') {
Monatistrichtig = false;
} else {
pos++;
}
break;
default:
Monatistrichtig = false;
break;
}
}
//jahr
if (Monatistrichtig == true && Tagistrichtig == true) {
if (test[2].length() != 4) {
Jahristrichtig = false;
}
for (i = 0; i < test[2].length(); i++) {
switch (Datum.charAt(6 - pos + i)) {
case '0':
break;
case '1':
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
break;
case '6':
break;
case '7':
break;
case '8':
break;
case '9':
break;
default:
Jahristrichtig = false;
break;
}
}
}
if (Tagistrichtig == false || Monatistrichtig == false || Jahristrichtig == false) {
Datumistrichtig = false;
}
return Datumistrichtig;
}
/**
* Gibt den Tag aus
* @return tag
*/
public String Tag() {
if (Datumistrichtig == false) {
return "-1";
}
return test[0];
}
/**
* Gibt den Monat aus
* @return monat
*/
public String Monat() {
if (Datumistrichtig == false) {
return "-1";
}
return test[1];
}
/**
* Gibt das Jahr aus
* @return jahr
*/
public String Jahr() {
if (Datumistrichtig == false) {
return "-1";
}
return test[2];
}
}
package datumsanalyse;
public class Main {
public static void main(String[] args) {
Datumsanalyse Neu = new Datumsanalyse("15.2.1966");
System.out.println(Neu.run());
System.out.println("Tag: " + Neu.Tag());
System.out.println("Monat: " + Neu.Monat());
System.out.println("Jahr: " + Neu.Jahr());
}
}