Zum Inhalt springen

Durschnittswert von Zahlen errechnen?


Empfohlene Beiträge

Geschrieben

Ich möchte ein Programm schreiben, welches mir nach der Eingabe von mehreren Zahlenwerten die Durchschnittszahl ausgibt, nur weiß ich leider überhaupt nicht wie ich das angehen soll.

Gruß

Azubi

Geschrieben

Wenn du eine bestimmte Anzahl Zahlen hast die du eingibst, dann speichere doch jede Zahl in einer Variablen, rechne alles zusammen und teile durch die Anzahl der Zahlen.

Oder willst du eine vorher nicht festgelegte Anzahl Zahlen eingeben?

Geschrieben

Du könntest alle Zahlen in einen String schreiben (mit nem Semikolon als Trennzeichen)

mit der Methode split(";") kannst du daraus ein Array machen, welches alle deine Zahlen enthält.

dann kannst du alle Elemente des Array zusammenrechnen (könnte mir da ne schleife vorstellen) und durch die Länge des Arrays teilen (mit dem Attribut length des Arrays)

Geschrieben

Ja aber nicht wirklich, oder?

Du bekommst eine Zahl. Diese addierst Du auf eine Summenvariable und erhöhst den Zähler (der am Anfang auf 0 steht).

Wenn alle Zahlen erfasst sind, dann rechnest Du Summe / Zähler und hast den Durchschnitt.

Peter

Geschrieben

Und?

Es ist egal, ob die Zahlen auf einmal kommen oder wie auch immer.

Es wird einfach eine Schleife gebaut, die einen Zähler hat und alle Zahlen nacheinander aufaddiert. Danach teilst Du durch den Zähler und ende.

<edit>

bei Deiner Lösung muss man die Zahlen in Strings verpacken, in einen Container packen, diesen Container auslesen und die Strings wieder zu Zahlen machen, die man addiert.

In meinen Augen ein ziemlicher - und unnötiger Overhead...

</edit>

Peter

Geschrieben

Ich brauch nochmal eure Hilfe

Ich habe zwar nach meinem Verständniss die Aufgabe gelößt aber nicht nach Meinung von meiner Ausbilderin, welche meinte:

Die Aufgabenstellung war, daß eine beliebige Anzahl von Werten

eingelesen werden soll, dein Programm fragt diese Anzahl allerdings vorher

ab. Also wiederhole ich mich nochmal: Ich wollte, daß du das ganze mit dem

String Array löst. Dabei kann der Benutzer eine beliebige Anzahl von Werten

angeben, es ist Aufgabe des Programmes die Anzahl herauszufinden.

Ich weiß jetzt allerdings nicht wie ich das machen soll, da ich von String Arrays kein wirkliches Wissen haben.

Hier ist mein aktuelles Programm:

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.BufferedReader;

public class Durschnittswert

{

public static void main(String[] args)

{

double Summe = 0;

int ZahlenAnzahl=0;

int Zahl= 0;

String Eingabe;

String Bla;

BufferedReader console = new BufferedReader (new InputStreamReader(System.in));

try

{

System.out.println("Wieviele Zahlen möchten Sie eingeben?: ");

Eingabe = console.readLine();

ZahlenAnzahl = Integer.parseInt(Eingabe);

}

catch(IOException e)

{

System.out.print("Es ist ein Fehler aufgetreten. Abruch!");

System.exit(2);

}

for (int i=1; i<=ZahlenAnzahl; i++)

{

try

{

System.out.println("Bitte geben Sie die "+ i +"te Zahl ein: ");

Bla = console.readLine();

Zahl = Integer.parseInt(Bla);

}

catch(IOException e)

{

System.out.print("Es ist ein Fehler aufgetreten. Abruch!");

System.exit(1);

}

Summe = Summe+Zahl;

}

double Ergebnis = Summe/ZahlenAnzahl;

System.out.println( "Durchschnittswert: " + Ergebnis );

}

}

Geschrieben
Original geschrieben von Azubi22

Ich wollte, daß du das ganze mit dem

String Array löst.

Moin,

das was sie will, ist noch viel einfacher als das was du bis jetzt gemacht hast.

public static void main(String[] args)

Hier wird der main Methode ein String Array mit Werten aus der Kommandozeile übergeben.

Also liefert:

java DeinProgramm 1 2 3 4 5

ein Array args mit den 5 Strings 1 - 5.

Dieses Array kannst du nun in einer for oder while Schleife durchlaufen, die Werte summieren und zum Schluß durch die Anzahl teilen. Fertig!

Gruß Jaraz

Geschrieben

Ich hab jetzt nochmal ein Programm gefunden was meinen Anforderungen in etwa entspricht.

Nur weiß ich jetzt nicht wo die Zahlen eingelesen werden, denn wenn ich das Programm starte kommt nur "NaN" auf der Komandozeile.

1 public class Durchschnitt {

2

3 public static void main( String[] args ) {

4

5 int anzahlWerte = args.length;

6 double sum = 0;

7 for( int i=0; i < anzahlWerte; i++ ) {

8

9 try {

10 sum += Double.parseDouble( args );

11 }

12 catch( NumberFormatException e ) {

13 System.out.println( e.toString() );

14 System.exit(1);

15 }

16 }

17

18 // Ausgabe

19 double ergebnis = sum/anzahlWerte;

20 System.out.println( "Durchschnittswert: " + ergebnis );

21

22 }

23 }

Geschrieben
Original geschrieben von Azubi22

Ich hab jetzt nochmal ein Programm gefunden was meinen Anforderungen in etwa entspricht.

Nur weiß ich jetzt nicht wo die Zahlen eingelesen werden, denn wenn ich das Programm starte kommt nur "NaN" auf der Komandozeile.

Probiers mal mit der folgenden Erweiterung in Zeile 4:

if(args.length = 0){

System.out.println("Bitte eine oder mehrere Zahlen als Parameter eingeben");

System.out.println("Zum Beispiel: java Durchschnitt 10 23 1");

}

else if(args.length != 0){

.... hier dein Quelltext ...

In Zeile 21 musst du noch folgendes Hinzufügen:

}

Mit dieser Erweiterung überprüfst du, ob überhaupt übergabeparameter mit

eingegeben wurden!

Das knn man natürlich noch erweitern, indem die Parameter noch dahingehend

überprüft werden, ob sie auch tatsächlich Zahlen sind!

Geschrieben
Original geschrieben von kingofbrain

Und?

Es ist egal, ob die Zahlen auf einmal kommen oder wie auch immer.

Es wird einfach eine Schleife gebaut, die einen Zähler hat und alle Zahlen nacheinander aufaddiert. Danach teilst Du durch den Zähler und ende.

<edit>

bei Deiner Lösung muss man die Zahlen in Strings verpacken, in einen Container packen, diesen Container auslesen und die Strings wieder zu Zahlen machen, die man addiert.

In meinen Augen ein ziemlicher - und unnötiger Overhead...

</edit>

Peter

Du wirst recht haben.

Bin halt auch nur ein dummer kleiner Telekom-Azubi *grins*

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...