Mittelwert

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
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
 
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
 
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;
 
Code:
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
 
Code:
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?
 
Code:
for(i=0;i<args.length;i++)
statt
Code:
for(i=0;i<=args.length;i++)
 
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.
 
^^ hab ja nix gegen deine Verbesserung gesagt, aber der Gast muss halt beide machen damits geht. (sieht man ja an der 0 hinter arrayIndexout...)
 
kannst ja auch noch abfragen lassen ob argumente mit übergeben wurden...

Code:
...
if (args.length == 0) {
    System.out.println("Class Mittel: keine Argumente übergeben");
}
...
 
musiKk hat gesagt.:
Code:
for(i=0;i<args.length;i++)
statt
Code:
for(i=0;i<=args.length;i++)

danke,bekomme leider den selben Fehler
 
Code:
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???????????
 
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...
 
> 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
 
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,

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

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?
 
>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
 
Habe es etwas umgeändert,aber es klappt trotzdem nicht



Code:
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);
	}
}
 
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?
 
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????????
 
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






Code:
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);
	}
}
 
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
 
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?
 
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
 
Code:
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?
 
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,
 
Hier ist mien Programm

Code:
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
 
: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
 
dieser Programmstil ist hier im Forum doch langsam so bekannt,
da musst du auch nicht mehr als gast posten 😉
 
Verbesserungsvorschlag:

Statt

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

Code:
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*/
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben