Erste Schritte Durchschnitt / Mittelwert nach Zahlenabfrage

DeMichaelis

Mitglied
Hallo,

ich brauche Hilfe bei etwas nicht ganz so schwierigem ;-)
Da ich noch Anfänger bin, bekomme ich das aber so nicht hin...:bahnhof:

Die Aufgabe:

Erst soll eine Abfrage gemacht werden, wie viele Zahlen eingegeben werden sollen.
Nach dieser Zahl die eingegeben wurde, soll dann die Anzahl gesetzt werden wie viele Zahlen man als nächstes eingeben kann.
Die Zahlen sollen dann addiert werden und anschließend durch die Anzahl der Zahlen geteilt werden.
Damit erhält man dann quasi den Durchscnitt / den Mittelwert ! (bei Zahl 0 soll eine fehlermeldung erscheinen)

Ich hab da mal was überlegt:

System.out.println("Wie viele Zahlen sollen verglichen werden?");
abfrage1 = Double.parseDouble(input.readLine());

{ if (abfrage1 < 1)
{
System.out.println("Keine Zahlen notwenig");
}
else if (abfrage1 < 2) {
System.out.println("Bitte Zahlen eingeben:");
System.out.println("Erste Zahl:");
Zeit1 = Double.parseDouble(input.readLine()); }
else if (abfrage1 < 3) {
System.out.println("Bitte Zahlen eingeben:");
System.out.println("Erste Zahl:");
Zeit1 = Double.parseDouble(input.readLine());
System.out.println("Nächste Zahl:");
.... usw....


Am Ende soll dann die Durchschnittszahl ausgegeben werden. (als Variable speichern...)

Mein Vorgehen wäre dabei ja nicht optimal, da ich dann ja alle möglichen zahlen aufzählen müsste. Aber da gibt es doch bestimmt eine möglichkeit das zu umgehen und direkt die anzahl nutzen.

Ich denke ihr versteht was ich meine :)
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Also ein Array braucht man dafür eigentlich nicht, wenn man direkt nach Eingabe die Zahl zu einer Variablen addiert. Grob der Ablauf:
- Eine Variable
Code:
double summe
deklarieren und mit 0.0 initialisieren.
Java:
System.out.println("Wie viele Zahlen sollen verglichen werden?");
abfrage1 = Double.parseDouble(input.readLine());
- Hier wohl besser Integer.parseInt. Man kann ja schlecht 2,37865 Zahlen eingeben.
- Eine for-Schleife abfrage1 mal durchlaufen
- In der for-Schleife Eingabe einlesen und
Code:
summe += eingabe
- Nach der for-Schleife ein
Code:
summe / abfrage1
(denke Dir für abfrage1 noch einen besseren Namen aus, z.B. anzahlEingaben)

Also, langer Rede kurzer Sinn: Du sollst mit dieser Aufgabe anscheinend üben, eine for-Schleife zu bauen.
 
Zuletzt bearbeitet von einem Moderator:

DeMichaelis

Mitglied
Also ein Array braucht man dafür eigentlich nicht, wenn man direkt nach Eingabe die Zahl zu einer Variablen addiert. Grob der Ablauf:
- Eine Variable
Code:
double summe
deklarieren und mit 0.0 initialisieren.
Java:
System.out.println("Wie viele Zahlen sollen verglichen werden?");
abfrage1 = Double.parseDouble(input.readLine());
- Hier wohl besser Integer.parseInt. Man kann ja schlecht 2,37865 Zahlen eingeben.
- Eine for-Schleife abfrage1 mal durchlaufen
- In der for-Schleife Eingabe einlesen und
Code:
summe += eingabe
- Nach der for-Schleife ein
Code:
summe / abfrage1
(denke Dir für abfrage1 noch einen besseren Namen aus, z.B. anzahlEingaben)

Also, langer Rede kurzer Sinn: Du sollst mit dieser Aufgabe anscheinend üben, eine for-Schleife zu bauen.

Danke!

Ich hab jetzt mal folgendes:


System.out.println("Wie viele Zahlen sollen verglichen werden?");
anzahl = Integer.parseint(input.readLine());

System.out.println("Bitte erste Zahl eingeben:");
Zeit1 = Integer.parseInt(input.readLine());

for(int i=0; i<anzahl; i++);
{
System.out.println("Nächste Zahl:");
Zeit2 = Integer.parseInt(input.readLine());


aber wie komme ich dann weiter in der for-Schleife?
Ich muss ja immer einen neue Variable erstellen, damit ich die einzelnen eingegeben Zahlen abspeichern kann.
Oder kann man alle eingegebenen Zahlen direkt addieren ohne die deklariert zu haben?? ???:L
 
M

Marcinek

Gast
Ja, so wie nille geschrieben hat, definierst du eine Variable "summe".

Da kann man die sachen ja aufsummieren.
 

DeMichaelis

Mitglied
Ich habe ja jetzt z.b. die "Zeit1" und "Zeit2" genutzt.
Kann ich die dann erstzen oder wie ist das gemeint??

Wenn ich am Anfang z.b. Anzahl = 100 eingebe, brauche ich ja die Variablen Zahl1 bis Zahl100 ^^

Wie ist da dann der Befehl zum addieren?
 
F

Firephoenix

Gast
Dann addierst du einfach jede Eingabe direkt auf die Summe, das geht auch ohne Variable dazwischen.

(Wenn du das nächste mal postest schau doch mal was in rot über dem Antworten-Feld steht ;) )

Gruß
 
N

nillehammer

Gast
Der Ablaufplan aus meinem vorherigen Post konnte so fast schon 1:1 in Java-Zeilen überführt werden. Nachdem Du selbst schon fast fertig bist, habe ich Deinen Code jetzt mal genommen und korrigiert. Versuche, die Struktur nachzuvollziehen und lies Dir unbedingt noch mal irgend einen Artikel zu for-Schleifen durch. Deine Version der for-Schleife hat nämlich garnichts gemacht, weil Du direkt ein ";" hinter den Schleifen-Kopf gesetzt hast.
Java:
System.out.println("Wie viele Zahlen sollen verglichen werden?");

anzahl = Integer.parseInt(input.readLine());

// Variable summe deklarieren und mit 0.0 initialisieren
double summe = 0.0;

// for(int i=0; i<anzahl; i++); <-- Kommt aus Deinem Code und ist FALSCH
// Das ";" direkt hinter dem Schleifenkopf
// ist ein leerer Befehl. Deine for-Schleife
// hat also nichts gemacht, außer zu laufen.

// so geht's richtig:
for(int i=0; i<anzahl; i++) {
  System.out.println("Bitte Zahl eingeben:");


  // Integer.parseInt habe ich aus Deinem Code. Ist das Absicht?
  // Warum nimmst Du hier kein Double.parseDouble mehr, wie in Deinem ersten Post???
  summe += Integer.parseInt(input.readLine());
  // "+=" ist eine Abkürzung. Falls nicht verständlich, bitte googeln.
}

//.. So nu noch Durchschnitt berechnen und ausgeben
 
Zuletzt bearbeitet von einem Moderator:

DeMichaelis

Mitglied
Danke für die gute Vorlage! Jetzt hats geklappt :)

Java:
System.out.println("Wie viele Zahlen sollen verglichen werden?");
    
    anzahl = Integer.parseInt(input.readLine());
    if (anzahl>0) {
      for(int i=0; i<anzahl; i++) {
        System.out.println("Bitte die " +(count+1) +". Zahl eingeben:");
        
        summe += Double.parseDouble(input.readLine());
      count = count + 1; }

Zum Thema Integer.parseInt...
habe ich genommen da ich dachte das ich " Double.parseDouble " nicht nehmen kann, weil ich diese variable vorher als Int deklariert habe. Oder geht das doch ?


Jetzt fehlt nur noch eins:

Es soll nach:
Java:
System.out.println("Bitte die " +(count+1) +". Zahl eingeben:");
geprüft werden, ob eine 0 (Null) eingegeben wurde. Wenn Ja, dann soll der Vorgang auf die Zeile dadrüber zurückgeworfen werden und ein Text "Die Zahl 0 ist ungültig! Bitte neue Zahl eingeben" ausgegeben werden.
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Zum Thema Integer.parseInt...
habe ich genommen da ich dachte das ich " Double.parseDouble " nicht nehmen kann, weil ich diese variable vorher als Int deklariert habe. Oder geht das doch ?
Bitte nicht verwechseln und Code genau lesen;).
Code:
anzahl
ist ein int, da Integer.parseInt.
Code:
summe
ist ein double, da dann Double.parseDouble. Wenn
Code:
summe
ein int wäre, würde Double.parseDouble natürlich nicht gehen...
 
T

TryToHelp

Gast
Java:
    System.out.println("Wie viele Zahlen sollen verglichen werden?");
    anzahl = Integer.parseInt(input.readLine());
    double readed=0.0;
    if (anzahl>0) {
      for(int i=0; i<anzahl; i++) {
        System.out.println("Bitte die " +(count+1) +". Zahl eingeben:");
        readed=Double.parseDouble(input.readLine());
        if (readed!=0){
           summe += readed
           count = count + 1;
        }else{
            i--;
            System.out.println("readed ist ungültig");
         }
       }
    }
 

Neue Themen


Oben