# Parameter existiert ja/nein - prüfen?



## magic_halli (7. Aug 2006)

Hi,

ich lese verschiede Parameter aus und lasse mir diese dann ausgeben (Strings und Doubles), z.B.:

```
Parameter sachnr = model.GetParam("Sachnummer");
ParamValue sachnr_value = sachnr.GetValue();
...
//Ausgabe
```

Wie kann ich nun aber prüfen, ob der Parameter überhaupt existiert? (Wenn er nicht existiert, soll dann einfach eine fest definierte Zeichenkette anstatt des Value eingesetzt werden.)

Danke.


----------



## AlArenal (7. Aug 2006)

Das muss aus der Dokumentation der Methode #GetParam der Klasse von der 'model' ein Instanz ist, hervorgehen. Vermutlich wird entweder null zurückgegeben, wenn der Key nicht gefunden wurde, oder eine Exception geworfen.

Eins ist aber klar: Wer immer die Klasse geschrieben hat, Java ist nicht sein Ding und erkommt womöglich von C#.

Schlussendlich können wir deine Frage nicht definitiv beantworten, da wir aus dem Codefetzen nicht die entsprechenden Infos rauslesen können (Klasse von model, Doku der Methode). Von daher macht das Fragen wenig Sinn


----------



## byte (7. Aug 2006)

Warum sollte der aus C# kommen? Da gibts doch diese Properties, was eigentlich schöner ist als die Umsetzung der Getter und Setter in Java.


----------



## magic_halli (7. Aug 2006)

Ok, habe mir die API reingezogen und es gibt dort eine boolsche Methode, die das abfragt: GetIsDesignated().

Sorry, dass ich da nicht eher draufgekommen bin - dachte, man könnte da mit Java allgemein hantieren. Aber danke...


----------



## AlArenal (7. Aug 2006)

byto hat gesagt.:
			
		

> Warum sollte der aus C# kommen? Da gibts doch diese Properties, was eigentlich schöner ist als die Umsetzung der Getter und Setter in Java.



Weil der Entwickler C#-like die Methoden groß schreibt. Außerdem schrieb ich ja, wie du richtig sagst, dass er von C# kommt, nicht dass es sich beim Code um C# handelt (bzgl. Properties)


----------



## Acha (7. Aug 2006)

Warum soll nicht ganz einfach auch:


```
if( sachnr_value != null)
{
  //tu irgendwas
}
```
gehen?

MFG

Acha


----------



## AlArenal (7. Aug 2006)

@acha:

Weil nicht gesagt ist, dass der Autor der Methode auch 'null' zurückliefert, wenn ein Schlüssel nicht gefunden wurde. Das ist zwar gemeinhin üblich, aber dass es ebenso üblich ist Methodennamen in Java mit einem Kleinbuchstaben zu beginnen, hat ihn auch nicht daran gehindert, es anders zu machen.


----------



## magic_halli (7. Aug 2006)

Wie schon gesagt, das Abfragen, ob der Parameter vorhanden ist, klappt.
Jetzt will ich noch abfragen, ob der Parameter leer ist, oder einen Value hat - klappt soweit auch, aber nur, wenn der Value vom Typ String ist. Ist der Value vom Typ Double, dann springt mein Code unweigerlich in den else-Zweig.

Code-Beispiel:

```
//Parameter menge und ParameterValue menge.value initialisieren - funktioniert!
...
//Abfragen, ob Parameter existiert(true/false) & ob Value Inhalt hat
if ( (menge.GetIsDesignated() == true) & (menge_value != null) ){
	menge_fname = new Double(menge_value.GetDoubleValue()).toString();
}
else {
	menge_fname = "@@@@@";	
}
```
Wie oben schon gesagt, springt mein Code in den else-Zweig, wenn der Wert vom Typ Double ist. Meine Vermutung ist, dass ich vielleicht Double nicht mit !=null prüfen kann, ob die Variable leer ist?! (ist nur ne Vermutung  :roll:  )
Ansonsten weiß ich nicht weiter, da der Parameter existiert und einen Value hat.


----------



## The_S (7. Aug 2006)

richtig, ein double ist ein primitiver Datentyp und kann nicht null sein. Er hat immer einen Wert.


----------



## byte (7. Aug 2006)

AlArenal hat gesagt.:
			
		

> Weil der Entwickler C#-like die Methoden groß schreibt. Außerdem schrieb ich ja, wie du richtig sagst, dass er von C# kommt, nicht dass es sich beim Code um C# handelt (bzgl. Properties)



Achso das meinste. Ich dachte, Du würdest Dich irgendwie auf die komische Art eines Getters mit String-Argument beziehen. 




			
				Hobbit_Im_Blutrausch hat gesagt.:
			
		

> richtig, ein double ist ein primitiver Datentyp und kann nicht null sein. Er hat immer einen Wert.



Nicht ganz richtig. Er kann auch NaN sein!


----------



## AlArenal (7. Aug 2006)

Und ein double kann auch nicht den Wert "@@@@@" annehmen


----------



## byte (7. Aug 2006)

```
double d = 0d / 0d;
System.out.println(d);
```


----------



## magic_halli (7. Aug 2006)

@AlArenal

Ich weiß! Die ganzen ausgelesenen Values werden dann aber zu einem String, welcher später der Name einer Datei ist, zusammengesetzt. Das funktioniert auch schon. Diese @@@@@ sind quasi die Ersatzlösung, falls mal nix in irgendeinem Value drinsteht bzw. dieser nicht existiert.  :wink:

Edit:
als Beispiel:

```
String menge_fname;
...
//hier der Code von oben
...
dateiname = menge_fname +"__"+ undsoweiter_fname;
```


----------

