# keine buchstaben!nur zahlen eingabe möglich



## tanzverfuehrung (12. Aug 2011)

also ich habe eine klasse


```
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


```
@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:


----------



## nrg (12. Aug 2011)

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).


----------



## tanzverfuehrung (12. Aug 2011)

also es sind gleitkommazahlen die zu prüfen sind.
und dann soll keine exception kommen sondern einfach nur nur ne error message
also mit regex?:rtfm:


----------



## .Domii (12. Aug 2011)

überprüfung mit contains^^


```
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 ^.^


----------



## Gonzo17 (12. Aug 2011)

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.


----------



## nrg (12. Aug 2011)

wow, der quatsch kriegt auch noch ein danke 

@TO: das könnte vllt helfen:  Example: Matching Floating Point Numbers with a Regular Expression
ansonsten google mal "double regex java" oder so


----------



## .Domii (12. Aug 2011)

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 :]


----------



## XHelp (12. Aug 2011)

@Domii, ist aber immer noch falsch. Da überprüfst du, ob irgendwo mindestens ein Buchstabe da ist.
Außerdem kannst du auch: 
	
	
	
	





```
for (int i='A';i<='Z';i++)
```
 schreiben


----------



## jgh (12. Aug 2011)

ich würde einfach ne NFE schmeißen...da es sich ja wahrscheinlich um user eingaben handelt?

also einfach irgendwie so eine Methode aufrufen:

```
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;
	}
```


----------



## .Domii (12. Aug 2011)

ja weil sobald ein Buchstabe vorhanden ist --> letter = true^^ von danach kann er überprüfen


```
if(letter=true){
//behandlung
}
```

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

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


----------



## nrg (12. Aug 2011)

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.


----------



## jgh (12. Aug 2011)

@ 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). _


----------



## nrg (12. Aug 2011)

@ Domii: das würde man dann eher so machen:

```
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


----------



## XHelp (12. Aug 2011)

@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?


----------



## tanzverfuehrung (12. Aug 2011)

.Domii hat gesagt.:


> 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 :]



ich bin eine SIE!!!:toll:


----------



## tanzverfuehrung (12. Aug 2011)

XHelp hat gesagt.:


> @Domii, ist aber immer noch falsch. Da überprüfst du, ob irgendwo mindestens ein Buchstabe da ist.
> Außerdem kannst du auch:
> 
> 
> ...




das ist ja auch geil:toll:


----------



## tanzverfuehrung (12. Aug 2011)

XHelp hat gesagt.:


> @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.


----------



## Gonzo17 (12. Aug 2011)

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.


----------



## VfL_Freak (12. Aug 2011)

Moin,



tanzverfuehrung hat gesagt.:


> ja  ..."nichts anderes als zahlen"!!!
> ist ja logisch bei position,aber sorry das ich mich falsch ausgedrückt habe.



Um mal schnell ein paar Haare zu spalten :
meinst Du _Zahlen_ oder _Ziffern_ ???:L

Gruß
Klaus


----------



## bone2 (12. Aug 2011)

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:

```
edit: falsche vorraussetzungen, siehe s2
```


----------



## tanzverfuehrung (12. Aug 2011)

```
@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???


----------



## RySa (12. Aug 2011)

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:

```
@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;
        }
    }
```


----------



## tanzverfuehrung (12. Aug 2011)

```
@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:


----------



## bone2 (12. Aug 2011)

was erwartest du, was passiert? du wertest den boolean doch nirgends aus


----------



## RySa (12. Aug 2011)

Ließ einfach mein Edit und nimm das Beispiel...


----------



## truesoul (12. Aug 2011)

Hmmm, wieso alles im try-catch block machen?
Einfach mit regulären Ausdruck machen und gut ist.
z.B

```
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.


----------



## bone2 (12. Aug 2011)

@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


```
@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");
            }
        }
```


----------



## RySa (12. Aug 2011)

truesoul hat gesagt.:


> Hmmm, wieso alles im try-catch block machen?
> Einfach mit regulären Ausdruck machen und gut ist.
> z.B
> 
> ...



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...


----------



## truesoul (12. Aug 2011)

RySa hat gesagt.:


> 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 )


----------



## bone2 (12. Aug 2011)

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


```
if(numbersOnly(LATITUDE)){
             foo();
        }

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

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


----------



## tanzverfuehrung (12. Aug 2011)

RySa hat gesagt.:


> 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

```
@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.!!!


----------



## bone2 (12. Aug 2011)

nimm meinen code, du bekomsmt keine exception, nur eine fehlermeldung, die exception wird ja aufgefangen

edit: den hier: http://www.java-forum.org/java-basi...nur-zahlen-eingabe-moeglich-2.html#post794583


----------



## RySa (12. Aug 2011)

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


> ```
> if(numbersOnly(LATITUDE)){
> foo();
> }
> ...



Wird schon bei 1.5 oder 1,5 nicht funktionieren (es sei dem, Kommazahlen sind nicht erlaubt)


----------



## bone2 (12. Aug 2011)

RySa hat gesagt.:


> @bone2
> Wird schon bei 1.5 oder 1,5 nicht funktionieren (es sei dem, Kommazahlen sind nicht erlaubt)


das war nur zur veranschaulichung der verwendung von booleans in return und if-statements, wie man am foo() sieht, ist das nicht zur verwendung gedacht

benutzen sollte sie das hier: http://www.java-forum.org/java-basi...nur-zahlen-eingabe-moeglich-2.html#post794583

edit: ♥


----------



## tanzverfuehrung (12. Aug 2011)

bone2 hat gesagt.:


> @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
> 
> ...




das ding ist nur das es zwei konstanten sind... string konstanten,
werden in einer anderen Klasse so definiert

```
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????????????


```
addField(new StringFieldEditor(longi, " Breitengrad(Longitude):", getFieldEditorParent()));
```


----------



## tanzverfuehrung (12. Aug 2011)

bone2 hat gesagt.:


> das war nur zur veranschaulichung der verwendung von booleans in return und if-statements, wie man am foo() sieht, ist das nicht zur verwendung gedacht
> 
> benutzen soltle er das hier: http://www.java-forum.org/java-basi...nur-zahlen-eingabe-moeglich-2.html#post794583





ER ist eine SIE!!!


----------



## bone2 (12. Aug 2011)

dann machs wieder zum string, uns fehlt ein wenig das drum-her-rum, das hast du uns ja nicht gepostet^^


```
String.valueOf(d)
```




tanzverfuehrung hat gesagt.:


> 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?


----------



## RySa (12. Aug 2011)

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 ?


----------



## tanzverfuehrung (12. Aug 2011)

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!


----------



## Gonzo17 (12. Aug 2011)

```
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 
	
	
	
	





```
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".


----------



## Sonecc (12. Aug 2011)

Grob überflogen hast du die Lösung schon bekommen. Was dir noch fehlt ist das abschalten der Buttons.


----------



## RySa (12. Aug 2011)

> das ding ist nur das es zwei konstanten sind... string konstanten,
> werden in einer anderen Klasse so definiert
> 
> 
> ...



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 ?


----------



## truesoul (12. Aug 2011)

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ß ).


----------



## nillehammer (12. Aug 2011)

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


----------



## tanzverfuehrung (12. Aug 2011)

RySa hat gesagt.:


> 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

```
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


----------



## Louisa2011 (12. Aug 2011)

RySa hat gesagt.:


> *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?


----------



## RySa (12. Aug 2011)

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):


> ```
> @Override
> protected void createFieldEditors() {
> addField(new StringFieldEditor(LONGITUDE, " Breitengrad(Longitude):", getFieldEditorParent()));
> ...



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  )


----------



## Camino (12. Aug 2011)

> .jetzt werd' ich hier mal *sexistisch* aber...logisches denken ?


Wenigstens hast du es selbst noch gemerkt...


----------



## tanzverfuehrung (12. Aug 2011)

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


----------

