# Mittelwert



## Guest (2. Aug 2008)

class Mittel
{
	public static void main(String args[])
	{
		int n,i;
		double summe,mittelwert;
		summe=0;
		n=Integer.parseInt(args[0]);
		for(i=1;i<=n;i++)
		{	summe=summe+Double.parseDouble(args_);
		}
	mittelwert=summe/n;
	System.out.println("Mittelwert:"+mittelwert);
	}
}

das ist der Fehler den ich beim ausführen erhallte


>javac Mittel.java
>Exit code: 0
>java Mittel
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at Mittel.main(Mittel.java:8)
>Exit code: 1_


----------



## CyD (2. Aug 2008)

1. Benutz bitte die CODE-Tags
2. Du musst dem Programm die nötigen Argumente args[] mitgeben.
zb:
java Mittel 5 6 7 2 1 4

Versuchsmal!

gruß 
CyD


----------



## Wolfgang Lenhard (2. Aug 2008)

Offensichtlich übergibts Du in args[0] die Anzahl an Werten. Das brauchst Du nicht. Lass n lieber ganz weg und schreibe in der for-Schleife:
->    for(i=0;i<=args.length;i++) 
Entsprechend auch mittelwert=summe/n;  in mittelwert=summe/args.length;


----------



## Guest (2. Aug 2008)

```
class Mittel 
{
	public static void main(String args[])
	{
		int n,i;
		double summe,mittelwert;
		summe=0;
		n=Integer.parseInt(args[0]);
		for(i=0;i<=args.length;i++)
		{	summe=summe+Double.parseDouble(args[i]);
		}
	mittelwert=summe/n;
	System.out.println("Mittelwert:"+mittelwert);
	}
}
```

habe leider noch immer den selben Fehler

>javac Mittel.java
>Exit code: 0
>java Mittel
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at Mittel.main(Mittel.java:8)
>Exit code: 1


----------



## Guest (2. Aug 2008)

```
class Mittel 
{
	public static void main(String args[])
	{
		int n,i;
		double summe,mittelwert;
		summe=0;
		n=Integer.parseInt(args[0]);
		for(i=0;i<=args.length;i++)
		{	summe=summe+Double.parseDouble(args[i]);
		}
	mittelwert=summe/args.length;
	System.out.println("Mittelwert:"+mittelwert);
	}
}
```

>javac Mittel.java
>Exit code: 0
>java Mittel
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at Mittel.main(Mittel.java:8)
>Exit code: 1


wo könnte den der Fehler noch sein?


----------



## musiKk (2. Aug 2008)

```
for(i=0;i<args.length;i++)
```
statt

```
for(i=0;i<=args.length;i++)
```


----------



## Schandro (2. Aug 2008)

> Du musst dem Programm die nötigen Argumente args[] mitgeben.
> zb:      java Mittel 5 6 7 2 1 4



...


----------



## musiKk (2. Aug 2008)

Das ist halt nur die halbe Wahrheit. Wenn in der for-Schleife auf Gleichheit getestet wird, gibts immer noch eine Exception. Mit der Korrektur in keinem Fall.


----------



## Schandro (2. Aug 2008)

^^ hab ja nix gegen deine Verbesserung gesagt, aber der Gast muss halt beide machen damits geht. (sieht man ja an der 0 hinter arrayIndexout...)


----------



## Gast v2.0 (2. Aug 2008)

kannst ja auch noch abfragen lassen ob argumente mit übergeben wurden...


```
...
if (args.length == 0) {
    System.out.println("Class Mittel: keine Argumente übergeben");
}
...
```


----------



## Guest (3. Aug 2008)

musiKk hat gesagt.:
			
		

> ```
> for(i=0;i<args.length;i++)
> ```
> statt
> ...



danke,bekomme leider den selben Fehler


----------



## Guest (3. Aug 2008)

Schandro hat gesagt.:
			
		

> > Du musst dem Programm die nötigen Argumente args[] mitgeben.
> > zb:      java Mittel 5 6 7 2 1 4
> 
> 
> ...




wie geht das?


----------



## Guest (3. Aug 2008)

```
class Mittel 
{
	public static void main(String args[])
	{
		int n,i;
		double summe,mittelwert;
		summe=0;
		n=Integer.parseInt(args[0]);
		if (args.length == 0)
			{
				System.out.println("Class Mittel: keine Argumente übergeben");
			}
		for(i=0;i<args.length;i++)
		{	summe=summe+Double.parseDouble(args[i]);
		}
	mittelwert=summe/args.length;
	System.out.println("Mittelwert:"+mittelwert);
	}
}
```

Also ich bekomme den selben Fehler

Frage

was amche ich falsch?

Also ich möchte die Zahlen von der Tastatur einlesen????

nur was mache ich falsch???????????


----------



## musiKk (3. Aug 2008)

Alles. Und dadurch, dass du jetzt drei Posts in fuenf Minuten rausballerst, wirst du die Hilfsbereitschaft hier nicht gross foerdern. Ich bin jetzt jedenfalls raus...


----------



## SlaterB (3. Aug 2008)

> was amche ich falsch? 

du sprichst nicht in ganzen Sätzen, um WELCHEN Fehler gehts?
auch ein nicht gerade selbstverständlicher Blick auf die vorherigen Postings läßt mir kein Licht aufgehen,

wenn du Parameter des Programmes verarbeiten willst,
dann ist doch offensichtlich immens wichtig, welchen Befehl du zum Programmstart eintippst,
wieso schreibst du den nicht?

starte das Programm, wie schon geschrieben wurde, z.B. mit
java Mittel 5 6 7 2 1 4


----------



## Guest (3. Aug 2008)

SlaterB hat gesagt.:
			
		

> > was amche ich falsch?
> 
> du sprichst nicht in ganzen Sätzen, um WELCHEN Fehler gehts?
> auch ein nicht gerade selbstverständlicher Blick auf die vorherigen Postings läßt mir kein Licht aufgehen,
> ...



sorry wenn ich dich falsch verstanden haben sollte, also meinst du so ich für den Wert des Mittelwert die Werte 5,6,7,8 übergeben?


----------



## Gast (3. Aug 2008)

>javac Mittel.java
>Exit code: 0
>java Mittel
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at Mittel.main(Mittel.java:8)
>Exit code: 1
das ist der Fehler den ich bekomme


----------



## Guest (3. Aug 2008)

Habe es etwas umgeändert,aber es klappt trotzdem nicht




```
class Mittel 
{
	public static void main(String args[])
	{
		int n,i;
		int u=5;
		int g=6;
		int j=7;
		double summe,mittelwert;
		summe=0;
		n=u+g+j;
		n=Integer.parseInt(args[2]);
		for(i=0;i<n;i++)
		{	summe=summe+Double.parseDouble(args[i]);
		}
		if (args.length == 0)
			{
				System.out.println("Class Mittel: keine Argumente übergeben");
			}
	mittelwert=summe/n;
	System.out.println("Mittelwert:"+mittelwert);
	}
}
```


----------



## SlaterB (3. Aug 2008)

Gast hat gesagt.:
			
		

> >java Mittel
> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
> at Mittel.main(Mittel.java:8)


gut dass du das so postest,

aber nun zum zweiten Mal von mir, zum mindestens dritten Male in diesem Thread:

schreibe nicht
java Mittel
sondern
java Mittel 3 4 5 6 700

ist doch leicht?


----------



## Gast (3. Aug 2008)

Mal eine blöde Frage ist es nicht besser.

Die Werte in einem Array zu speichern???

Mit welchen Methoden kann man den eine Zahl von der Tastatur einlesen????????


----------



## Guest (3. Aug 2008)

habe es umgeändert.
also mein Programm sieht jetzt so aus

bekomme beim compilieren diesen Fehler

was heißt den das?

>javac Mittel.java
Mittel.java:1: '{' expected
class Mittel 4 5 6 700
            ^
1 error
>Exit code: 1







```
class Mittel 4 5 6 700
{
	public static void main(String args[])
	{
		int n,i;
		double summe,mittelwert;
		summe=0;
		n=Integer.parseInt(args[0]);
		for(i=1;i<args.length;i++)
		{	summe=summe+Double.parseDouble(args[i]);
		}
		mittelwert=summe/args.length;
	System.out.println("Mittelwert:"+mittelwert);
	}
}
```


----------



## SlaterB (3. Aug 2008)

das heißt, dass nach dem Namen einer Klasse ein { stehen soll und nicht komische Zahlen,
wie kommst du denn auf die Idee? 


ich meinte den Befehl, den man in der Konsole zum Starten des Programms verwendet,
nicht dass du den Quellcode der Java-Klasse ändern sollst,

mit derartigen Vorgehen bist du wirklich weit vom Programmieren entfernt


----------



## Gast (3. Aug 2008)

Ich verstehe was du ,meinst,aber wenn mein Programm beim ausführen einen Fehle ranzeigt so kann ich den Werte ja nicht eingeben verstehst du?


----------



## SlaterB (3. Aug 2008)

nein, das Eingeben der Werte findet ja bisher statt, bevor das Programm überhaupt läuft,

natürlich könnte man auch später eingeben, aber das wäre ein ganz anderes Programm und bisher nicht Thema dieses Topics


----------



## Guest (3. Aug 2008)

```
class Mittel 
{
	public static void main(String args[])
	{
		int n,i;
		double summe,mittelwert;
		summe=0;
		n=Integer.parseInt(args[0]);
		for(i=1;i<args.length;i++)
		{	summe=summe+Double.parseDouble(args[i]);
		}
		mittelwert=summe/args.length;
	System.out.println("Mittelwert:"+mittelwert);
	}
}
```

Das kommt beim Compilieren


>javac Mittel.java
>Exit code: 0

Das kommt wenn ich auf Build gehe

>javac *.java
Tester.java:7: array dimension missing
		int[] a=new int[];
		                 ^
Tester.java:8: array dimension missing
		int[] b=new int[];
		                 ^
Tester.java:9: '.class' expected
		a=Integer.parseInt(args[]);
		                         ^
Tester.java:10: '.class' expected
		b=Integer.parseInt(args[]);
		                         ^
4 errors
>Exit code: 1

Was könnte dne da nso falsch sein

mus sich da ein Aaray bilden?


----------



## SlaterB (3. Aug 2008)

von der Klasse Tester.java ist zum ersten Mal die Rede, 
dessen Quellcode willst du posten aber über Compilerfehler dazu diskutieren?
dieses Vorgehen ist mir unverständlich

>  int[] a=new int[];
ist kein ordentlicher Java-Code,
jedes Tutorial/ Lehrbuch und sogar die Fehlermeldung verraten eindeutig, dass man z.B.
int[] a=new int[5];
schreiben muss

die weiteren Fehlermeldungen sind etwas unverständlich, da Java an dieser Stelle die fehlerhalt definierten Variablen a & b gar nicht kennt,

> Integer.parseInt(args[]); 
ist aber in jedem Fall wieder kein richtiger Code

schau dir doch mal die entsprechende Stelle in der Mittel-Klasse an, da steht doch noch was zwischen
Integer.parseInt(args[ und ]);
oder?


wenn a ein int-Array ist, dann kannst du in der Variablen selber übrigens keinen int speichern, sondern höchstens in einem der Felder des Arrays,

-----------


du solltest nicht verschiedene Dinge mischen,
übe erstmal mit Arrays zu hantieren (Lehrbuch!!)
übe dann in einem anderen Programm das Integer.parseInt (Lehrbuch!!)
übe dann in einem anderen Programm mit den Parametern der main-Methode umzugehen (String args[], Lehrbuch!!)

dann irgendwann langsam alles zusammenbringen,
ich sage an dieser Stelle auch tschüss,


----------



## Gast (3. Aug 2008)

Danke für die Hilfe


----------



## Gast (3. Aug 2008)

habe es hinbekommen


----------



## Guest (4. Sep 2008)

Hier ist mien Programm


```
class Mittelwert1
{
	public static void main(String args[])
	{
		double sum=0,Mittelwert=0,w[];
		int i;/*VaRIble von der Tastatur zu lesen*/
		int n;/*Hilfsvariabel*/
		System.out.println("Bitte geben sie eine Zahl für i ein:");
		i=IO1.einint();/*Zahl wird von der Tastatur einlesen*/
		w=new double[i+1];
		
		for(n=0;n<=i-1;n++)
		{
			System.out.println("Geben sie ihre Werte bitte ein");
			w[n]=IO1.eindouble();/*Werden die Werte einegegeben*/
			sum=sum+w[n];/*Summe wird berechnet*/
			Mittelwert=sum/i;/*Mittelwert wird berechnet*/
			
		}
			System.out.println("Ihr i lautet:"+i);/*Ausgabe der Anzahl*/
			System.out.println("Ihre sum lautet:"+sum);/*Summe der Werte*/
			System.out.println("Ihr Mittelwert lautet:"+Mittelwert);/*Ergebniss vom Mittelwert*/	
	}		
}
```

Hier die Ergebnisse

Bitte geben sie eine Zahl f³r i ein:
3
Geben sie ihre Werte bitte ein
12.4
Geben sie ihre Werte bitte ein
34.5
Geben sie ihre Werte bitte ein
45.6
Ihr i lautet:3
Ihre sum lautet:92.5
Ihr Mittelwert lautet:30.833333333333332


----------



## CyD (4. Sep 2008)

:applaus: 
hat zwar nen Monat gedauert, aber so wie es aussieht scheinst du mit deinem "Ergebnis" zufrieden zu sein.  :wink: 

Nur ne Frage am Rande: Benutzt du eine IDE (zb. Eclipse) oder compilierst du über die Console (zb. cmd.exe/terminal)?
Wenn die Antwort IDE lautet, machs lieber mit der Console ;-)

gruss
CyD


----------



## SlaterB (4. Sep 2008)

dieser Programmstil ist hier im Forum doch langsam so bekannt,
da musst du auch nicht mehr als gast posten


----------



## Leroy42 (4. Sep 2008)

Verbesserungsvorschlag:

Statt


```
for(n=0;n<=i-1;n++) 
      { 
         System.out.println("Geben sie ihre Werte bitte ein"); 
         w[n]=IO1.eindouble();/*Werden die Werte einegegeben*/ 
         sum=sum+w[n];/*Summe wird berechnet*/ 
         Mittelwert=sum/i;/*Mittelwert wird berechnet*/ 
          
      }
```

besser


```
for(n=0;n<i;n++) 
      { 
         System.out.println("Geben sie den "+(n+1)+". Wert ein"); 
         w[n]=IO1.eindouble();/*Werden die Werte einegegeben*/ 
         sum=sum+w[n];/*Summe wird berechnet*/ 
          
      }
Mittelwert=sum/i;/*Mittelwert wird berechnet*/
```


----------

