Aufgabe zu lokalen Klassen

Tenori

Mitglied
Guten Tag,
ich soll als Übungsaufgabe eine Klasse "Email" implementieren, die mithilfe einer lokalen Klasse überprüft, ob die angegebenen Eingaben richtig sind(den Konventionen für Emails entsprechen).
Meine Datei Email.java:
Code:
import java.util.regex.*;

public class Email
{
	private String betreff;
	private String text;
	private String empfaenger;
	private String absender;
	
	public Email(String empfaenger, String absender, String betreff, String text)
	{
		this.empfaenger = empfaenger;
		this.absender = absender;
		this.betreff = betreff;
		this.text = text;
	}
	
	public void senden()
	{
		class InternetMailAddress
		{
			private boolean isValid(String address)
			{
				// Prüfung der einzelnen Kriterien: - genau ein @ 
				//									- nur a-z,A-Z,0-9,_,.
				//									- mindestens 1 Zeichen für Empfängername bzw. Server
				//									- beginnen mit einem Zeichen, das nicht @ oder * ist
				//									- @servername darf wegfallen, wenn das letze Zeichen ein * ist, dann wird automatisch @it-designers.de angehängt
				boolean a = Pattern.matches(address,"$\\*"); // Wenn letztes Zeichen ein *   
				if(a)                                                        // ist, dann ersetzen
				{
					StringBuffer sb = new StringBuffer(address);
					sb.deleteCharAt(sb.length());
					sb.append("@it-designers.de");
					address= sb.toString();
				}
				boolean b = Pattern.matches(address,"[a-zA-Z0-9\\._]+@[a-zA-Z0-9\\._]");
				if(b)
				{
					return true;
				}
				return false;
			}
		}
		InternetMailAddress refTest = new InternetMailAddress();
		if(refTest.isValid(empfaenger) && refTest.isValid(absender))
		{
			System.out.println("Absender: " + absender);
			System.out.println("Empfaenger: " + empfaenger +"\nBetreff: " + betreff +"\nText: " + text);
		}
	}
}

Und die Datei TestEmail.java
Code:
public class TestEmail
{
   public static void main (String [] args)
   {
      Email e1 = new Email ("Klaus.Gross*", "Lotte.Klein@gmz.de", "Hallo", "Hallo Welt");
      e1.senden();

      Email e2 = new Email ("Klaus.Gross*", "Lotte.Kleingmz.de", "Hallo", "Hallo Welt");
      e2.senden();
   }
}

Wo ist der Fehler, also ich bin mir net sicher, wie das mit den Regulären Ausdrücken funktioniert, das sollte man sich mithilfe der API anlesen, das wurde im Buch nicht erläutert, darum ist das hier so der erste Versuch, wie ich das verstanden hatte.
Aber eigentlich müsste doch bei der Methode "e1.senden()" eine Ausgabe erfolgen, oder?

Grüße
 

BrauniDeluxe

Mitglied
Ausgabe erfolgt nur wenn die isValid() true returned .. tut es aber nicht

Hier mal nen Schnellschuss mit google :) (ohne das ersetzen von Email adressen .. musst beim aufruf dann richtige email adressen nehmen)

Java:
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Email {
	private String betreff;
	private String text;
	private String empfaenger;
	private String absender;

	public Email(String empfaenger, String absender, String betreff, String text) {
		this.empfaenger = empfaenger;
		this.absender = absender;
		this.betreff = betreff;
		this.text = text;
	}

	public boolean isValid(String address) {
		String expression = "^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
		CharSequence inputStr = address;
		Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(inputStr);
		return matcher.matches();
	}

	public void senden() {
		if (isValid(empfaenger) && isValid(absender)) {
			System.out.println("Absender: " + absender);
			System.out.println("Empfaenger: " + empfaenger + "\nBetreff: "
					+ betreff + "\nText: " + text);
		} else {
			System.out.println("Email not valid");
		}
	}
}

Gruss
Dennis
 
Zuletzt bearbeitet:

Tenori

Mitglied
Danke erstmal,
aber wieso gibt denn meine Methode isValid() kein true zurück?
Wenn die Email in der richtigen Form eingegeben wird, sollte sie doch true zurückgeben, und das wird sie doch bei der Test-Datei bei dem Objekt e1.
Wo liegt bei mir der genaue Fehler? Ist nur ne Übungsaufgabe, darum würde ich das gerne wissen.
Ich glaube irgendwie das es bei mir in der Zeile "boolean a = Pattern.matches(address,"$\\*");" ist,
ich habe nur gefunden, dass $ für das letzte Zeichen steht, aber die Anwendung war mir nicht genau klar, weil ich irgendwie überprüfen muss , ob das letzte Zeichen ein "*" ist.
Kann natürlich auch sein, dass der Fehler woanders liegt, war jetzt nur ne Vermutung meinerseits.

Grüße

Edit: Ok, die Vermutung scheint falsch zu sein, auch wennich mit @aol.com oda so ausprobiere, und nicht mit * am Ende, die Überprüfung also egal ist, kriege ich keine Ausgabe, also wo liegt mein Fehler?
 
Zuletzt bearbeitet:

BrauniDeluxe

Mitglied
Naja ne .. die Absenderadresse bei e1 ist auch falsch .. das mit dem vervollständigen klappt ja nicht.

Kannst das letzte Zeichen auch überprüfen mit : myString.endsWith("*);

Bin da auch kein Experte und müsste da erst nach schauen, gibts aber bestimmt im JAVA-InselBuch wie du genau die Abfrage machst .. die auf Stern asl letztes Zeichen funktioniert so anscheinend nicht.
Am besten mal bisschen rum probieren, da lernt man am meisten.

Gruss
Dennis
 

Ein Keks

Bekanntes Mitglied
Pattern (Java Platform SE 6))
guck dir mal den matches befehl genau an was fällt dir auf? Genau erst regex dann input und jetzt guck ma bei dir : Pattern.matches(address,"$\\*") ...
war mal so nett und habs verbessert:
Java:
import java.util.regex.*;

public class Email {

	private String betreff;
	private String text;
	private String empfaenger;
	private String absender;

	public static void main(String[] args) {
		Email e1 = new Email("Klaus.Gross*", "Lotte.Klein@gmz.de", "Hallo",
				"Hallo Welt");
		System.out.println("Email 1:");
		e1.senden();

		Email e2 = new Email("Klaus.Gross*", "Lotte.Kleingmz.de", "Hallo",
				"Hallo Welt");
		System.out.println("Email 2:");
		e2.senden();
	}

	public Email(String empfaenger, String absender, String betreff, String text) {
		this.empfaenger = empfaenger;
		this.absender = absender;
		this.betreff = betreff;
		this.text = text;
	}

	private boolean isValid(String address) {
		if (Pattern.matches(".+\\*", address)){  //hättest du in die API gesehen wär dir das auch aufgefallen: erst regex dann inhalt!!!!
			StringBuffer sb = new StringBuffer(address);
			sb.deleteCharAt(sb.length()-1); //deleteCharAt fängt bei 0 an zu zählen...stichwort array
			sb.append("@it-designers.de");
			address = sb.toString();
		}
		return Pattern.matches("[a-zA-Z\\._\\-]+@[a-zA-Z\\._\\-]+", address); //also das war echt unnötig...
	}

	public void senden() {
		if (isValid(empfaenger) && isValid(absender)) {
			System.out.println("Absender: " + absender);
			System.out.println("Empfaenger: " + empfaenger + "\nBetreff: "
					+ betreff + "\nText: " + text);
		} else {
			System.out.println("Ein Fehler ist aufgetreten! Bitte überprüfen Sie ihre Eingabe!"); //der vollständdigkeit wegen
		}
	}
}

aber regex ist auch was fieses...

edit: ich sollte wohl mehr auf die überschrift achten --> dann eben doch mit innerer klasse ändert ja nicht viel
 
Zuletzt bearbeitet:

Tenori

Mitglied
Super,
danke dir. Darauf, dass zuerst die regex kommt und dann input, darauf hatte ich garnicht geachtet..
Ähm, die Aufgabe ist aus dem Kapitel über geschachtelte Klassen, und man sollte es mit ner inneren Klasse lösen, darum die innere Klasse.

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
I matrix aufgabe Java Basics - Anfänger-Themen 22
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 18
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
J Aufgabe als Feuertaufe Java Basics - Anfänger-Themen 8
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
H aufgabe 4 Java Basics - Anfänger-Themen 297
M Hilfe bei Projektorientierungs-Aufgabe !! Java Basics - Anfänger-Themen 3
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
H was verlangt die aufgabe ? Java Basics - Anfänger-Themen 10
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
H array aufgabe Java Basics - Anfänger-Themen 13
D Erste Schritte Lösen dieser Aufgabe, Hilfe! Java Basics - Anfänger-Themen 12
H aufgabe Java Basics - Anfänger-Themen 9
H lösung aufgabe Java Basics - Anfänger-Themen 12
S Hilfe für Aufgabe Java Basics - Anfänger-Themen 4
H java online aufgabe Java Basics - Anfänger-Themen 4
H Array aufgabe Java Basics - Anfänger-Themen 7
H oop aufgabe probe kalusur Java Basics - Anfänger-Themen 11
H oop aufgabe Java Basics - Anfänger-Themen 19
H JAVA AUFGABE Java Basics - Anfänger-Themen 7
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
J Problem bei Aufgabe "Geldstückelung" Java Basics - Anfänger-Themen 5
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
B Verständnis Frage zu der Aufgabe Java Basics - Anfänger-Themen 30

Ähnliche Java Themen

Neue Themen


Oben