# Wie geht das mit den Aufrufparameter??



## mauro343 (8. Mai 2004)

Hallo wer kann mir helfen?!

Das Programm spuckt egal was ich für einen Wert eingebe immer 1.0 aus? Was ist da falsch?
Danke


```
public class KugelTest2 {
	
	public static void main(String echo []) {
		
		
	Kugel KugelTest01;
	
	double radius1;
	for (radius1=0;radius1<echo.length;radius1++);
	
	
	
		
		KugelTest01 = new Kugel (radius1) ;{
		
		System.out.println("Der Radius der KugelTest01 ist:"+KugelTest01.getRadius () );
		System.out.println("mit dem Volumen:"+KugelTest01.volume () );
		System.out.println("mit der Oberflaeche:"+KugelTest01.surface () );
		}
	}
	
}
```
Klasse Kugel existiert bereits!


----------



## Jaraz (8. Mai 2004)

Moin,

falsche Klammersetzung, deine for Schleife macht nix außer radius hochzählen.
Außerdem greifst du nirgends auf das Array echo zu.

Gruß Jaraz

PS: Variablennamen sollten klein beginnen.


----------



## Beni (8. Mai 2004)

Jaraz hat recht:

```
for( ... ){
}
```

Nach dem _for(...)_ wird *kein *Semikolon geschrieben!


----------



## Illuvatar (8. Mai 2004)

mauro343 hat gesagt.:
			
		

> ```
> for (radius1=0;radius1<echo.length;radius1++);
> 
> KugelTest01 = new Kugel (radius1) ;{
> ...


Ich wusste gar nicht, dass so was überhaupt kompiliert wird, aber es wird kompiliert ???:L 

Dein Code bedeutet:
Sooft, wie Parameter an das Programm übergeben werden: radius1 um 1 erhöhen und nichts machen.
Danach eine neue Instanz von Kugel erstellen, und die return-Werte der Methoden ausgeben.
==>

1. Wenn du schreibst radius1<echo.length wird diese Schleife sooft ausgefühtr, wie du Parameter übergibst. D.h. wenn du die Klasse mit 
	
	
	
	





```
java Kugel srgf sredg zute hbv "kh kih"
```
 ausführst, wird die Schleife 5 mal ausgeführt, mit 
	
	
	
	





```
java Kugel 5
```
 nur einmal.
Du meinst wahrscheinlich: 
	
	
	
	





```
for (radius1=0;radius1<Integer.parseInt (echo[0]);radius1++);
```

2. Der Strichpunkt hinter der for-Schleife stimmt auch nicht, da der Strichpunkt eine leere Anweisung ist, und somit jedesmal in der Schleife ausgeführt wird, *und sonst nichts*.
Du musst also alles, was in der Schleife stehen soll, in geschweifte Klammern stellen.

3. Das wolltest du vermutlich mit den geschweiften Klammern um die System.out.println's machen. Diese sind aber nutzlos.

4. In gutem Java schreibt man die [] hinter den Variablentyp und nicht hinter den Variablenname, das ist nur ein Tribut zu C/C++.

Zusammengefasst:

```
public class KugelTest2 {

   public static void main(String[] echo ) {
     Kugel KugelTest01;
     double radius1;
     for (radius1=0;radius1<Integer.parseInt (echo[0]);radius1++){
       KugelTest01 = new Kugel (radius1) ;

       System.out.println("Der Radius der KugelTest01 ist:"+KugelTest01.getRadius () );
       System.out.println("mit dem Volumen:"+KugelTest01.volume () );
       System.out.println("mit der Oberflaeche:"+KugelTest01.surface () );
     }
   }
}
```

Übrigens: ein gutes Buch über Java gibt es z.B. auf www.javabuch.de


Edit: Später, aber besser


----------



## mauro343 (8. Mai 2004)

Ok danke erstmal an alle!
Jetzt zählt er die Werte hoch also wenn ich 23 angebe dann sagt er mir alle Werte von 0-23. Wie kann ich es machen, dass nur der Wert 23 ausgegeben wird? Ausserdem möchte ich Dezimalzahlen eingeben können, nicht nur ganze Zahlen?!
Danke im Vorraus


----------



## Beni (8. Mai 2004)

Für Dezimalzahlen nimmst du am einfachsten _Double.parseDouble_ .

Und für das andere: entweder lässt du die Schlaufe weg, oder du schreibst ein if. ( so etwas in der Art _if( index + 1 == array.length )_  ) 

mfg Beni


----------



## mauro343 (8. Mai 2004)

Ok hab ich gemacht danke!! Aber jetzt kommt die nächste Hürde! Ich möchte 2 Werte eingeben und möchte, dass das Programm  diese 2 Werte getrennt berechnet! So wie der Code jetzt ist wird zweimal der erste der beiden eingegebenen Werte ausgegeben! Wie mache ich das?


```
class KugelTestParameter {
	public static void main (String args []) {
	
		Kugel KugelTest01;
		
		double radius;
	
	if (args.length !=2) {
		System.out.println("Bitte Wert eingeben");
		System.exit (-1);
	}
	
	radius = Double.parseDouble (args[0]) ;
	
	KugelTest01 = new Kugel (radius) ;
	KugelTest01.KugelTyp ();

	System.out.println("Der Radius der KugelTest01 ist:"+KugelTest01.getRadius () );
	System.out.println("mit dem Volumen:"+KugelTest01.volume () );
	System.out.println("mit der Oberflaeche:"+KugelTest01.surface () );

	System.out.println("----------------------------");
	
	System.out.println("Der Radius der KugelTest01 ist:"+KugelTest01.getRadius () );
	System.out.println("mit dem Volumen:"+KugelTest01.volume () );
	System.out.println("mit der Oberflaeche:"+KugelTest01.surface () );

	}
}
```


----------



## L-ectron-X (8. Mai 2004)

```
class KugelTestParameter { 
   public static void main (String args []) { 
    
      Kugel KugelTest01;
       
      double radius; 
    
      if (args.length !=2) {
         System.out.println("Bitte zwei Werte eingeben!");
         System.out.println("Verwendung: java KugelTestParameter <wert1> <wert2>");
         System.exit (-1);
      }

      for(int i = 0; i < args.length; i++) {
         radius = Double.parseDouble (args[i]);

         KugelTest01 = new Kugel (radius);
         KugelTest01.KugelTyp ();

         System.out.println("Der Radius der Kugel mit dem Wert "+args[i]+" ist:"+KugelTest01.getRadius () );
         System.out.println("mit dem Volumen:"+KugelTest01.volume () );
         System.out.println("mit der Oberflaeche:"+KugelTest01.surface () );

         System.out.println("----------------------------");
      }
   } 
}
```
Meinst Du so etwas in der Art?


----------



## mauro343 (8. Mai 2004)

Genau so!! Vielen Dank jetzt klappts!!


----------

