Azubi22 Geschrieben 25. September 2003 Geschrieben 25. September 2003 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 Zitieren
granini Geschrieben 25. September 2003 Geschrieben 25. September 2003 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? Zitieren
Azubi22 Geschrieben 25. September 2003 Autor Geschrieben 25. September 2003 Ja, eigentlich soll die Anzahl der Eingaben unbeschränkt sein. Zitieren
granini Geschrieben 25. September 2003 Geschrieben 25. September 2003 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) Zitieren
kingofbrain Geschrieben 25. September 2003 Geschrieben 25. September 2003 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 Zitieren
granini Geschrieben 25. September 2003 Geschrieben 25. September 2003 Original geschrieben von kingofbrain Ja aber nicht wirklich, oder? warum nicht? Ich ging davon aus, dass er alle Zahlen auf einmal eingeben will. Zitieren
kingofbrain Geschrieben 25. September 2003 Geschrieben 25. September 2003 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 Zitieren
Azubi22 Geschrieben 29. September 2003 Autor Geschrieben 29. September 2003 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 ); } } Zitieren
Jaraz Geschrieben 29. September 2003 Geschrieben 29. September 2003 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 Zitieren
Azubi22 Geschrieben 29. September 2003 Autor Geschrieben 29. September 2003 Und wie sieht das programiertechnisch aus. Ich weiß leider nicht was ich da programieren soll? Zitieren
Azubi22 Geschrieben 29. September 2003 Autor Geschrieben 29. September 2003 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 } Zitieren
Peeter Geschrieben 29. September 2003 Geschrieben 29. September 2003 Wenn du das Programm startest mußt du die Zahlen als Parameter beim Start mitgeben. "java Durchschnitt 55 34 66 99" NaN bedeutet "Not A Number". Zitieren
Ramses_PyramidenVerleih Geschrieben 2. Oktober 2003 Geschrieben 2. Oktober 2003 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! Zitieren
granini Geschrieben 2. Oktober 2003 Geschrieben 2. Oktober 2003 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* Zitieren
Empfohlene Beiträge
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.