keine buchstaben!nur zahlen eingabe möglich

tanzverfuehrung

Bekanntes Mitglied
also ich habe eine klasse

Java:
public class MsecPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {


und die hat eine Methode, die die Preferences erstellt, das man die Position ändern kann. das geht auch alles soweit

Java:
@Override
	protected void createFieldEditors() {
		addField(new StringFieldEditor(LONGITUDE, " Breitengrad(Longitude):", getFieldEditorParent()));
		addField(new StringFieldEditor(LATITUDE, "Längengrad(Latitude):", getFieldEditorParent()));
	
	}

jetzt muss ich aber noch prüfen, das es keine buchstaben sind.
also das man nur zahlen eingeben kann für die Position(breitengrad & längengrad)
ich habe aber kein plan wie ich das abprüfen soll!
kann mir jemand helfen?:bahnhof:
 
definiere "zahlen". bei ganzzahlen ist das sehr einfach mit regez zu lösen. bei gleitkommazahlen zwar auch aber da kann die regex schon etwas langer werden 😉. vllt ist es dort einfacher die NumberFormatException zu catchen (obwohl das eigentlich eine zweckentfremdung von Exceptions ist).
 
überprüfung mit contains^^

Java:
boolean letter = false;
...
...
...
for(int i; i < 26; i++){
    if(String.contains(""+((char)(65+i)))){
        letter = true;
    }
}

würd glaub ich klappen 😛

aber mit Regex natürlich schöner ^.^
 
Zuletzt bearbeitet:
Ja, mit regulären Ausdrücken kann man so etwas sehr gut abfragen.

@Vorredner
Das ist quatsch, deine Methode würde nur anzeigen, ob eine Zahl vorhanden ist. Dass da auch ein Buchstabe drin sein kann, hast du nicht bedacht bei deiner Abfrage.
 
xD so geändert ;] hab mich verlesen dachte er will die Zahlen rausfiltert

--> editiert

zählt von 65 (laut ASCII code --> A) die ganzen Buchstaben hoch :]
 
Zuletzt bearbeitet:
@Domii, ist aber immer noch falsch. Da überprüfst du, ob irgendwo mindestens ein Buchstabe da ist.
Außerdem kannst du auch:
Code:
for (int i='A';i<='Z';i++)
schreiben
 
ich würde einfach ne NFE schmeißen...da es sich ja wahrscheinlich um user eingaben handelt?

also einfach irgendwie so eine Methode aufrufen:
Java:
boolean isDouble(String s) {

		// evtl vorher noch Kommata als Trenner gegen Punkte ändern
		String string = s.replace(",", ".");
		try {
			Double.parseDouble(string);
		} catch (NumberFormatException nfe) {
			// was auch immer du da machen willst
			return false;
		}
		return true;
	}
 
ja weil sobald ein Buchstabe vorhanden ist --> letter = true^^ von danach kann er überprüfen

Java:
if(letter=true){
//behandlung
}

er möchte doch wissen ob irgendwo ein Buchstabe vorkommt? 😵

@Vorposter
Exceptions sind nicht dazu da um die Programmlogik aufzubauen..
 
also ich wäre mit replaces aufgrund von 1000er-Trennzeichen immer sehr vorsichtig. ansonsten wäre das (wobei man vllt gleich die NumberFormatException nehmen sollte) wohl eine 100% sichere und sehr einfache Lösung, wenn auch etwas zweckentfremdend für Exceptions.
 
@ Zwischenposter 😉
Der Zweck heiligt die Mittel...

siehe auch nrg´s Beitrag:
vllt ist es dort einfacher die NumberFormatException zu catchen (obwohl das eigentlich eine zweckentfremdung von Exceptions ist).
 
@ Domii: das würde man dann eher so machen:
Java:
	public boolean numbersOnly(String s) {
		return s.matches("[0-9]+");
	}


@Vorposter
Exceptions sind nicht dazu da um die Programmlogik aufzubauen..

hatte ich doch schon 2x gesagt aber hier ist es einfach und fehlerunanfällig. das ist dann auf jedenfall besser als es selbst in die hand zu nehmen und es kommt sowas wie bei dir raus (nicht übel nehmen 🙂)
edit: wobei das vermutlich nicht auf mich bezogen war 😉
 
@Domii, ja, im Text stand "keine Buchstaben", aber ich vermute mal, dass es "nichts anderes als Zahlen" heißen soll.
Dein Code würde ja z.B. "&%§/(&/(§"%§&"" akzeptieren. Außerdem filtert dein Code jetzt A-Z... was ist denn mit a-z?
 
@Domii, ja, im Text stand "keine Buchstaben", aber ich vermute mal, dass es "nichts anderes als Zahlen" heißen soll.
Dein Code würde ja z.B. "&%§/(&/(§"%§&"" akzeptieren. Außerdem filtert dein Code jetzt A-Z... was ist denn mit a-z?


ja ..."nichts anderes als zahlen"!!!
ist ja logisch bei position,aber sorry das ich mich falsch ausgedrückt habe.
 
Also, wie schon gesagt wurde, das überprüfen, ob da jetzt ein bestimmtes Zeichen kommt per for-Schleife, ist eigentlich viel zu aufwändig. Denn irgendein Zeichen vergisst man, wieso also nicht per regulärem Ausdruck? Da sagst du, was erlaubt ist und gut ist. nrg's Lösung sieht doch schon in Ordnung aus, für Ganzzahlen klappt das, für alles Weitere muss man eben ein bisschen nachdenken und den regulären Ausdruck erweitern.
 
einfach parsen und exception catchen. man geht j davon aus, das das richtige eingebene wird, also ist eine exception im fehlerfall angemessen

das ganze vorher überprüfen kostet sinnlose rechenzeit

es fehlt ein bischen drumherrum, wie du das umsetzt/was passiert aber so in etwa:
Java:
 edit: falsche vorraussetzungen, siehe s2
 
Zuletzt bearbeitet von einem Moderator:
Java:
	@Override
	protected void createFieldEditors() {
		addField(new StringFieldEditor(LONGITUDE, " Breitengrad(Longitude):", getFieldEditorParent()));
		numbersOnly(LONGITUDE);
		addField(new StringFieldEditor(LATITUDE, "Längengrad(Latitude):", getFieldEditorParent()));
		numbersOnly(LATITUDE);
	}
	
	
	public boolean numbersOnly(String s) {
        if(s.matches("[0-9]+")== false){
        setErrorMessage("Die Position kann keine Buchstaben enthalten.");
        return false;}
		return true;
    }
}




wieso geht das jetzt nicht???
 
Also ich weiß gar nicht warum ihr hier mit Regex, und sonst was ankommt. Ich benutze selber gerne Regex, aber Leute, es sind doch User-Eingaben. Da ist doch das erste was auf die Zunge kommt "Exception abfangen"...Versuch doch mal einfach die Eingabe zu einer Zahl zu casten (Double.valueOf(String).doubleValue()) und fang die NumberFormatException bzw. die ArithmeticException im Falle das es nicht geht...wozu die ganzen Regex hier...

EDIT: Mach doch einfach:
Java:
    @Override
    protected void createFieldEditors() {
        addField(new StringFieldEditor(LONGITUDE, " Breitengrad(Longitude):", getFieldEditorParent()));
        numbersOnly(LONGITUDE);
        addField(new StringFieldEditor(LATITUDE, "Längengrad(Latitude):", getFieldEditorParent()));
        numbersOnly(LATITUDE);
    }
    
    
    public boolean numbersOnly(String s) {
        try{
          double d = Double.valueOf(s).doubleValue();
          return true;
        }
        catch(NumberFormatException ex){
           return false;
        }
        catch(ArithmeticException ex){
          return false;
        }
    }
 
Zuletzt bearbeitet:
Java:
@Override
	protected void createFieldEditors() {
		addField(new StringFieldEditor(LONGITUDE, " Breitengrad(Longitude):", getFieldEditorParent()));
		if(numbersOnly(LONGITUDE) == false){
			 setErrorMessage("Die Position kann keine Buchstaben enthalten.");
		}
		addField(new StringFieldEditor(LATITUDE, "Längengrad(Latitude):", getFieldEditorParent()));
		if(numbersOnly(LATITUDE) ==true){
			 setErrorMessage("Die Position kann keine Buchstaben enthalten.");
		}
	}
	
	
	public boolean numbersOnly(String s) {
        if(s.matches("[0-9]+")== false)
        return false;
		return true;
    }
und so funktioniert das auch nicht???WHY?:rtfm:
 
Hmmm, wieso alles im try-catch block machen?
Einfach mit regulären Ausdruck machen und gut ist.
z.B
Java:
String wertA = "234";
System.out.println(wartA.matches("(\\d+.\\d+|\\d+)")); // True

String wertB = "234.00";
System.out.println(wartB.matches("(\\d+.\\d+|\\d+)")); // True

String wertC = "234.0a";
System.out.println(wartC.matches("(\\d+.\\d+|\\d+)")); // False


String wertD = "s234.00";
System.out.println(wartD.matches("(\\d+.\\d+|\\d+)")); // False


String wertE = ".234.00";
System.out.println(wertE .matches("(\\d+.\\d+|\\d+)")); // False

private boolean isCorrectNumber(String value){
      return value.matches("(\\d+.\\d+|\\d+)");
}
boolean correct = isCorrectNumber("234");

if(correct){
    // Ist eine Zahl/Nummer
}else{
   // Errormessage
}

Und dann einfach mit If-Else lösen?
Bevor hier noch mehr Haarsträubende Idee aufkommen.
 
Zuletzt bearbeitet:
@rysa, dein edit ist sinnfrei, du wertest den boolean nirgends aus

@truesoul weil man davon ausgeht, das das richtige eingeben wurde und das vorher überprüfen damit vergeudete rechenzeit ist

Java:
        @Override
        protected void createFieldEditors() {
            try {
                double longi = Double.parseDouble(LONGITUDE);
                double latit = Double.parseDouble(LATITUDE);

                addField(new StringFieldEditor(longi, " Breitengrad(Longitude):", getFieldEditorParent()));
                addField(new StringFieldEditor(latit, "Längengrad(Latitude):", getFieldEditorParent()));

            }
            catch (NumberFormatException nfe) {
                System.out.println("fehler, nur zahlen eingeben");
            }
        }
 
Hmmm, wieso alles im try-catch block machen?
Einfach mit regulären Ausdruck machen und gut ist.
z.B
Java:
String wertA = "234";
System.out.println(wartA.matches("(\\d+.\\d+|\\d+)")); // True

String wertB = "234.00";
System.out.println(wartB.matches("(\\d+.\\d+|\\d+)")); // True

String wertC = "234.0a";
System.out.println(wartC.matches("(\\d+.\\d+|\\d+)")); // False


String wertD = "s234.00";
System.out.println(wartD.matches("(\\d+.\\d+|\\d+)")); // False


String wertE = ".234.00";
System.out.println(wertE .matches("(\\d+.\\d+|\\d+)")); // False

Und dann einfach mit If-Else lösen?
Bevor hier noch mehr Haarsträubende Idee aufkommen.

Also wenn du hier schon als blutiger Regex-Freund ankommst und am liebsten alles mit Regex lösen würdest, dann bau doch auch ein richtiges "(\\d+.?d*)"

EDIT: @bone2

Das war sein Beispiel, ich habe es einfach nur kopiert, und statt Regex das try, catch Block eingefügt, was der da sonnst überprüft oder auch nicht überprüft, ist doch seine Sache...
 
Also wenn du hier schon als blutiger Regex-Freund und am liebsten alles mit Regex lösen würdest, dann bau doch auch ein richtiges "(\\d+.?d*)"

Was ist denn an mein Regex falsch?
Dein Ausdruck bei z.B 12.23 false liefert?
Wenn schon dann "(\\d+.?\\d*)". ( Ok hast du im nachhinein geändert )
 
Zuletzt bearbeitet:
😀

@tanzverfuehrung übrigends vergleicht man üblicherweise im if statement nicht mit false oder true, man verwendet boolean direkt

Java:
        if(numbersOnly(LATITUDE)){
             foo();
        }

        if(! numbersOnly(LATITUDE)){
             foo2();
        }

    }
    
    
    public boolean numbersOnly(String s) {
        return s.matches("[0-9]+");
    }
 
Also ich weiß gar nicht warum ihr hier mit Regex, und sonst was ankommt. Ich benutze selber gerne Regex, aber Leute, es sind doch User-Eingaben. Da ist doch das erste was auf die Zunge kommt "Exception abfangen"...Versuch doch mal einfach die Eingabe zu einer Zahl zu casten (Double.valueOf(String).doubleValue()) und fang die NumberFormatException bzw. die ArithmeticException im Falle das es nicht geht...wozu die ganzen Regex hier...

ich habe es jetzt mal so probiert
Java:
    @Override
    protected void createFieldEditors() {
        addField(new StringFieldEditor(LONGITUDE, " Breitengrad(Longitude):", getFieldEditorParent()));
        numbersOnly(LONGITUDE);
        addField(new StringFieldEditor(LATITUDE, "Längengrad(Latitude):", getFieldEditorParent()));
        numbersOnly(LATITUDE);
    }
    
    
    public boolean numbersOnly(String s) {
        try{
          double d = Double.valueOf(s).doubleValue();
          return true;
        }
        catch(NumberFormatException ex){
setErrorMessage("Die Position kann keine Buchstaben enthalten.");
           return false;
        }
        catch(ArithmeticException ex){
setErrorMessage("Die Position kann keine Buchstaben enthalten.");
          return false;
        }
    }


ABER

das ding ist ja bloß, das ich keine exception haben will sondern eine error message ausgeben bekommen will
so das ich garnicht ok und apply in meiner preferences page drücken kann,wenn ich buchstben für eine position angeben habe.!!!
 
Ich würd es noch anders machen (wegen der deutschen Kommazahlen) : "(\\d+(.|,)?\\d*)" .

Ja, deins funktioniert (bis auf die Kommas statt Punkte) auch, und es "führt auch nach Rom" aber von Deutschland nach Italien über Sibirien zu fahren ist nicht das günstigste 🙂 So etwas würde auch funktionieren : "(([1234]|[567890])+.([1234]|[567890])*|([1234]|[567890])+)" - (also hoffe ich mal, ist mir zu unübersichtlich ^^) Man sollte es aber doch lieber so kurz machen wie es geht, findest du nicht ?

@bone2
Java:
if(numbersOnly(LATITUDE)){
             foo();
        }
 
        if(! numbersOnly(LATITUDE)){
             foo2();
        }
 
    }
    
    
    public boolean numbersOnly(String s) {
        return s.matches("[0-9]+");
    }

Wird schon bei 1.5 oder 1,5 nicht funktionieren (es sei dem, Kommazahlen sind nicht erlaubt)
 
Zuletzt bearbeitet:
Zuletzt bearbeitet von einem Moderator:
@rysa, dein edit ist sinnfrei, du wertest den boolean nirgends aus

@truesoul weil man davon ausgeht, das das richtige eingeben wurde und das vorher überprüfen damit vergeudete rechenzeit ist

Java:
        @Override
        protected void createFieldEditors() {
            try {
                double longi = Double.parseDouble(LONGITUDE);
                double latit = Double.parseDouble(LATITUDE);

                addField(new StringFieldEditor(longi, " Breitengrad(Longitude):", getFieldEditorParent()));
                addField(new StringFieldEditor(latit, "Längengrad(Latitude):", getFieldEditorParent()));

            }
            catch (NumberFormatException nfe) {
                System.out.println("fehler, nur zahlen eingeben");
            }
        }


das ding ist nur das es zwei konstanten sind... string konstanten,
werden in einer anderen Klasse so definiert
Java:
public static final String LATITUDE = "Latitude";
	public static final String LONGITUDE = "Longitude";


Fehlermelduing:The constructor StringFieldEditor(double, String, Composite) is undefined

weil longi ein String sein muss, ist aber ein dozble????????????

Java:
 addField(new StringFieldEditor(longi, " Breitengrad(Longitude):", getFieldEditorParent()));
 
dann machs wieder zum string, uns fehlt ein wenig das drum-her-rum, das hast du uns ja nicht gepostet^^

Code:
String.valueOf(d)


ER ist eine SIE!!!
uh verzeihung 😳 ihr seid hier so selten


edit: ich hab den stillen verdacht, das der gesamte thread bis hierher sinnlos war... kann es sein, das du da 2 editfelder erstellst, in die nur zahlen eingegeben werden sollen? du hast zur zeit der ausführung der methode noch garkeine eingebenen werte oder?
 
Zuletzt bearbeitet von einem Moderator:
Also irgendwie wird mir hier langsam klar, warum es auch so wenige "von denen" gibt. Jeder Post von dir, ändert deine gesamten Anforderungen. Du kannst dich nicht klar ausdrücken was du haben willst und erwartest, dass es alle einfach so mal wissen (typisch...) Ich weiß gar net mehr was du überhaupt haben willst. Du sagst es sind staatische Felder. Willst du jetzt überprüfen ob deine eigenen staatischen Felder keine Zahlen sind oder was ? 😵 Oder sind es jetzt User-eingaben, die gecheckt werden müssen. Sag doch mal endlich klar und deutlich was du überhaupt willst, und hör auf ständig "zu schreien", diese Caps-Locks und !!! überall kommen mir so vor als ob du schon rot vor Wut wärst, die Haare alle durcheinander und kurz davor bist, dein Bildschirm aus dem Fenster zu schmeißen...

Das Thema des Threads heißt "keine buchstaben!nur zahlen eingabe möglich", und das sagst du auch zuerst. Jetzt brauchst du plötzlich Strings und nicht doubles/ints. Außerdem überprüfst du deine eigenen staatischen Felder 😵....jetzt werd' ich hier mal sexistisch aber...logisches denken ?
 
Zuletzt bearbeitet:
also freunde...ich habe alles von euch ausprobiert und funktioniert immer noch nicht wirklich(vorschlag von: bon2 und truesoul)
es tut mir leid wenn ich mich nicht richtig ausgedrückt habe aber dachte habt es verstanden
also nochmal mein PROBLEM!
ausführlich!


ich habe ein Programm wo eine OSM (open street map)geladen wird, in diesem Programm habe ich eine Preferences Page
wo ich den tile Server und den Bild Server ändern kann(für die geladene map)(per hand)...das funktioniert alles...und da teste ich auch vorher ob die url stimmt und wenn nicht bekomme ich eine error message
(error message,damit meine ich ,KEINE EXCEPTION sondern das eine message auf meine prefernce page, wo ich die eigenschaften ändern kann, bekomme, wo steht"url ungültig" und ich nicht mal auf "apply" oder "ok" drücken kann, erst wenn ich eine richtige url eingegebn habe.)
und jetzt wolle ich zu der Preferences Page noch hinzufügen, das man die Position (Center der MAp) ändern kann.die breiten und längengrad
das funktioniert auch in meinem programm schon
nun will ich einfach nur noch testen,,, ob es wirklich NUR zahlen sind.
und wenn da irgendwo buchstaben oder irgendwelche zeichen sind(diese position gibt es ja nicht), soll es mir eine error message (in der Preferences Page)geben und ich kann wieder nicht "apply" oder "ok" drücken(wie bei der url prüfung).so was ja auch nicht schwer ist

setErrorMessage("Die Position kann keine Buchstaben enthalten.");

aber erstmal die richtig prüfung zu finden...grad irgendwie habt ihr mich alle sehr verwirrt...
der eine sagt regex, der andere aufkeinfall regex

also ich kann per hand dann in meinem programm die Position ändern!

jetzt verständlich!
 
Java:
	public static void main(String[] args) {
		int longitude, latitude;
		Scanner scan = new Scanner(System.in);
		System.out.println("Bitte geben Sie die folgenden Werte an.");
		System.out.print("Breitengrad(Longitude): ");
		String  nextValue = scan.next();
		if (numbersOnly(nextValue)) {
			longitude = Integer.valueOf(nextValue);
		} else {
			System.out.println("Der angegebene Wert ist keine Zahl!");
			return;
		}
		
		System.out.print("Längengrad(Latitude): ");
		nextValue = scan.next();
		if (numbersOnly(nextValue)) {
			latitude = Integer.valueOf(nextValue);
		} else {
			System.out.println("Der angegebene Wert ist keine Zahl!");
			return;
		}	
		// Ab jetzt kann man mit den Werten arbeiten
	}

	static boolean numbersOnly(String s) {
		return s.matches("[0-9]+");
	}

Hier ein Beispiel mit einem regulären Ausdruck, der nur Ganzzahlen prüft. Habe die Methode von nrg geklaut, ich hoffe er steinigt mich dafür nicht. Dieser reguläre Ausdruck ist beliebig erweiterbar, sodass du eben auch andere Werte akzeptieren kannst.
ABER, auch ganz klar, an der Stelle
Code:
Integer.valueOf
wird ohnehin eine Exception geworfen, wenn deine Eingabe falsch ist. Das heißt in DIESEM Fall wäre es möglich, dass du einfach nur die Exception abfängst und sie eben nicht durchlässt, sondern einen Error setzt. Das ist auf jeden Fall möglich und das haben hier ja verschiedene Leute auch schon gepostet. Ich persönlich denke jedoch, dass es ALLGEMEIN sinnvoller ist, wenn man das über reguläre Ausdrücke regelt, denn was machst du, wenn dir die Abfrage mal nicht abgenommen wird? Ja richtig, dann brauchst du selbst eine Abfrage. In diesem Fall wird dir das eben abgenommen, aber in vielen andern Fällen wäre das nicht so. Insofern sind beide Varianten möglich und keine ist "falsch", ein regulärer Ausdruck wäre höchstens sowas wie "doppelt gemoppelt". 😉
 
das ding ist nur das es zwei konstanten sind... string konstanten,
werden in einer anderen Klasse so definiert

Java:
public static final String LATITUDE = "Latitude";
    public static final String LONGITUDE = "Longitude";

Und wieso soll man bitte schön static final Variablen drauf überprüfen, ob sie Buchstaben enthalten, wenn die IMMER aus Buchstaben bestehen ?

numbersOnly(LATITUDE);
Da Wird doch wohl eine static final Variable, die du kennst, überprüft.
Bin ich zu blöd oder hast du da etwas falsch in der Logik ?
 
Hmm, warum sollte von RySa oder meine Variante nicht funktionieren?
Es sind entweder nur Ganzzahlen oder Gleitkommazahlen erlaubt, alles andere gibt false zurück?
Ein 12.00 gibt true zurück wo ein 12.aa false zurück gibt?
Mit dem den Ausdrücken text.matches("(\\d+(.|,)?\\d*)") oder text.matches("(\\d+(.|,)\\d+|\\d+)") sollte es ohne Probleme klappen?

Natürlich muss man noch prüfen ob die Zahl keine Ungültige Zahl ist ( z.B zu Groß ).
 
Das hängt von Deiner Umgebung ab,

Wenn Du es von Hand programmieren möchtest, ruf Integer.parseInt auf, fang die Exception, die fliegt, wenn es keine gültige Zahl ist und zeige eine lesbare Fehlermeldung an. Wenn Deine Oberfläche in Swing ist, könntest Du mittels eines Formatted Textfield die eingebbaren Werte direkt auf Zahlen einschränken: How to Use Formatted Text Fields (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

// Edit: Ach ja, Längen- und Breitengrade können ja Fließkommazahlen sein, dann eben Float.parseFloat
 
Zuletzt bearbeitet von einem Moderator:
Und wieso soll man bitte schön static final Variablen drauf überprüfen, ob sie Buchstaben enthalten, wenn die IMMER aus Buchstaben bestehen ?


Da Wird doch wohl eine static final Variable, die du kennst, überprüft.
Bin ich zu blöd oder hast du da etwas falsch in der Logik ?


das ist nur sozusagen die ID...
und ich setzte einen default wer ,in der gleichen klasse wo auch die konstanten erstellt werden
Java:
	store.setDefault(LONGITUDE, 13.629656);
		store.setDefault(LATITUDE, 52.329071);

also es hat float werte, aber damit ich weiß was sich ändert,brauche ich ja eine id und das sind die konstanten😉


mache jetzt erstmal pause...hoffentlich verstehe ich danach es endlich und werde es nochmal versuchen.!

...
werde euch berichten...^^
:rtfm:


ich DANKE euch allen trozdem ALLEN schonmal, für eure hilfe😉
 
Also irgendwie wird mir hier langsam klar, warum es auch so wenige "von denen" gibt. Jeder Post von dir, ändert deine gesamten Anforderungen. Du kannst dich nicht klar ausdrücken was du haben willst und erwartest, dass es alle einfach so mal wissen (typisch...) Ich weiß gar net mehr was du überhaupt haben willst. Du sagst es sind staatische Felder. Willst du jetzt überprüfen ob deine eigenen staatischen Felder keine Zahlen sind oder was ? 😵 Oder sind es jetzt User-eingaben, die gecheckt werden müssen. Sag doch mal endlich klar und deutlich was du überhaupt willst, und hör auf ständig "zu schreien", diese Caps-Locks und !!! überall kommen mir so vor als ob du schon rot vor Wut wärst, die Haare alle durcheinander und kurz davor bist, dein Bildschirm aus dem Fenster zu schmeißen...

Das Thema des Threads heißt "keine buchstaben!nur zahlen eingabe möglich", und das sagst du auch zuerst. Jetzt brauchst du plötzlich Strings und nicht doubles/ints. Außerdem überprüfst du deine eigenen staatischen Felder 😵....jetzt werd' ich hier mal sexistisch aber...logisches denken ?
(Hervorhebungen von mir.)

Ich stimme insoweit zu, dass tanzverführung sich nicht besonders deutlich ausdrückt in dem, was sie will, und dass auf "Wieso funzt das nicht"-Beiträge in Caps-Lock sicher verzichtet werden kann. Aber inwiefern sind die genannten Probleme bezüglich der Kommunikation "typisch" weiblich? Das kann ich nicht nachvollziehen.
Wenn man einmal schaut, wie viele (vermutlich größtenteils männliche) User in dieses Forum kommen und Beiträge verfassen, bei denen sich einem die Haare aufstellen vor Unleserlichkeit und Unverständlichkeit und bei denen sich niemand hier großartig aufregt oder es zumindest nicht auf das Geschlecht des Fragestellers zurückführt - dann frage ich mich, warum ausgerechnet bei der Bewertung von tanzverführungs Beiträgen relevant sein soll, dass sie eine Frau ist?
 
Ekhm, das ändert aber nichts daran, dass du die static final Variable, der Methode übergeben hast, die überprüfen soll, ob es nur Zahlen sind, und nicht die eigentliche eingabe. Zitat?(achte auf Kommentare):
Java:
    @Override
    protected void createFieldEditors() {
        addField(new StringFieldEditor(LONGITUDE, " Breitengrad(Longitude):", getFieldEditorParent()));
        numbersOnly(LONGITUDE); // <--------Überprüfst deine static final Variable, die ja ein String mit Buchstaben ist
        addField(new StringFieldEditor(LATITUDE, "Längengrad(Latitude):", getFieldEditorParent()));
        numbersOnly(LATITUDE); // <-----------Hier das gleiche
    }
    
    
    public boolean numbersOnly(String s) {
        try{
          double d = Double.valueOf(s).doubleValue();
          return true;
        }
        catch(NumberFormatException ex){
setErrorMessage("Die Position kann keine Buchstaben enthalten.");
           return false;
        }
        catch(ArithmeticException ex){
setErrorMessage("Die Position kann keine Buchstaben enthalten.");
          return false;
        }
    }

Da kann es doch wohl nur die exception schmeißen...

EDIT:
@Louisa2011

Da war ich wohl vielleicht bisschen aufgeregt, da sich die Anforderungen nach jedem Post geändert haben und ich sollte es mir vielleicht verkneifen. Ich stehe trotzdem dazu, es ist aber meine persönliche Erfahrung. Habe es bei vielen Frauen beobachtet und bin jetzt auch in einer festen Beziehung seit über 3 Jahren. Frauen können/wollen nicht genau sagen, was sie wollen/erwarten, erwarten aber dafür von allen (besonders von ihren Freunden/Verlobten/Ehemännern), dass sie doch wissen sollten, worum es geht und was sie haben möchten. Mag sein, dass ich dann vielleicht wohl "Pech" bei der Auswahl hatte, da kann ich aber jetzt nichts für. Daher kann meine Meinung eher Objektiv als subjektiv sein. Falls jemand meint, dass er nicht so wäre und sich somit durch meinen Beitrag beleidigt/ungerecht behandelt fühlt, dann bitte ich um Entschuldigung (ist jetzt nicht der Sinn und Zweck des Forums und vor allem des Thread, sich darüber zu streiten wie es ist, ich denke aber ich habe das Recht meine Meinung zu äußern, solange ich es auch nur als meine Meinung bezeichne) 🙂

Ps. Und ja, da sind zig Posts auf diesem Forum, die noch weniger Informationen über das Problem enthalten und wo die TO's noch mehr "Hellsehen" erwarten. Ich denke diese Posts sollten dann aber auch nicht als Maßstab angesehen werden, nach dem sich die anderen richten, nach dem Motto "Mein Post ist gar nicht so schlimm, es gibt schlimmeres", weil analog dazu könnte ein Täter sagen "Dass ich eine Person getötet habe ist nicht so schlimm, es gibt Mörder die über 10 Menschen umgebracht haben" 🙂 (der Vergleich vlt etwas übertrieben, ist aber das gleiche Prinzip, finde ich 😛 )
 
Zuletzt bearbeitet:
zu Louisa2011 und RySa will ich nur kurz sagen, eventuell liegt es ja auch an der männer welt, das sie einfach nicht so schnell verstehen!!!^^ich fande meine erklärung gut und habe sie verstanden
MUHAHAHAHAAAAAAA😱😀😀😀😀

ihr männer denkt wahrscheinlich einfach ganz anders!:shock:
:noe::lol:


und das problem habe ich auch gelöst aber GANZ ANDERS😀

es gibt eine Klasse IntegerFieldEditor die von StringFieldEditor erbt!
habe mir genau so eine Klasse gemacht bloß mit float werten
also alle int werte mit float werten umgetauscht!
uund meine Klasse erbt natülcih auch von StringFieldEditor

somit macht die Klasse alles,was ich wollte😀

DANKE trozdem für alle antworten und überlegungen
 

Zurück
Oben