Durchschnittsberechnung JAVA



  • Hallo Leute,

    habe in JAVA ein Programm geschrieben, welches den Durchschnitt berechnen soll. Habe for schleife verwendet. Doch irgendwie rechnet das programm immer falsch!

    Mein erstes Problem: wo liegt der fehler?
    mein zweites: ich möchte das programm so umschrteiben, das es nur die zahlen 0-15 liest (notenpunkte), und bei falscher eingabe soll halt da stehen, falsche zahl, neue zahl eingeben.

    wisst ihr wie das geht? 😕

    public class Durchschnitt_ForSchleife {

    public static void main(String[] args) {
    int n, i, zahl, s;
    double d;

    System.out.print("Bitte geben Sie die Anzahl der Zahlen ein: ");
    n=In.readInt();
    d=0;
    s=0;

    for(i=1; i<=n; i=i+1) {System.out.print("Bitte geben Sie eine Zahl "+i+" ein: ");
    zahl=In.readInt();
    s=s+zahl;
    }
    d=s/n;
    System.out.print("Der Durchschnittbetraegt: "+d);
    System.out.print("");
    System.out.print("");

    }
    }



  • Hallo

    Hast du schon einmal was von Debuggen gehört? Damit kannst du die Stelle an der der Fehler in der Berechnung auftritt finden und selber verbessern. Zum zweiten Problem: Prüfe doch einfach mittel <>, ob der eingegeben Wert zwischen 0 und 15 liegt und nimm ihn eben nur dann an.

    chrische



  • keine ahnung was das ist... glaube aber den fehlern trotzdem gefunden zu haben, das s (summe der zahlen) auch alsd double deklarieren!?

    würde mich aber auch für das debugen interessieren, wenn mir das mal jemand erklären möchte! 🙂

    was muss ich jetzt noch alles am quellcode verändern, damit nur die zahlen 0-15 anerkannt werden und bei falscher zahl eine fehlermeldung kommt und man aufgefordert wird eine neue zahl einzugeben?

    grüße thomas



  • Hallo

    Ich werde dir das nicht machen. Da musst du schon etwas Initiative zeigen. Stichwörter für google hast du ja.

    chrische



  • habe es jetzt soweit, das wenn eine zahl größer als 15 eingegeben wird eien fehlermeldung erscheint und eine neue zahl eingegeben wird, jedoch wird die erneute eingabe nicht überprüft. d.h ich muss da jetzt auch ne schleife einbauen?



  • public class notenpunkte {

    public static void main(String[] args) {
    int n, i, zahl;
    double d, s;

    System.out.print("Bitte geben Sie die Anzahl der Noten ein: ");
    n=In.readInt();
    d=0;
    s=0;

    for(i=1; i<=n; i=i+1) {System.out.print("Bitte geben Sie die "+i+".te Note ein ein: ");
    zahl=In.readInt();
    if (zahl>15) {System.out.println("Die Zahl entspricht keiner Noteneinheit! Bitte geben Sie die "+i+".te Note erneut ein: ");
    zahl=In.readInt();
    }
    else{if(zahl<0){System.out.println("Die Zahl entspricht keiner Noteneinheit! Bitte geben Sie die "+i+".te Note erneut ein: ");
    zahl=In.readInt();}
    }

    s=s+zahl;
    }

    d=s/n;
    System.out.print("Der Notendurchschnittbetraegt: "+d);
    System.out.print("");
    System.out.print("");



  • for(i=1; i<=n; i=i+1) {System.out.print("Bitte geben Sie die "+i+".te Note ein ein: ");
    zahl=In.readInt();
    if (zahl>15) {System.out.println("Die Zahl entspricht keiner Noteneinheit! Bitte geben Sie die "+i+".te Note erneut ein: ");
    zahl=In.readInt();
    }
    else{if(zahl<0){System.out.println("Die Zahl entspricht keiner Noteneinheit! Bitte geben Sie die "+i+".te Note erneut ein: ");
    zahl=In.readInt();}
    }
    
    s=s+zahl;
    }
    

    Und wenn man das zweite Mal eine falsche Note eingegeben hat, passt es nicht mehr.

    d.h ich muss da jetzt auch ne schleife einbauen?

    Ja, genau.



  • habe vor die bedingung jeweils eine while schleife gesetzt, so in etwa:

    while (zahl>15) {System.out.println("Die Zahl entspricht keiner Noteneinheit! Bitte geben Sie die "+i+".te Note erneut ein: ");
    zahl=In.readInt();
    }
    while(zahl<0){System.out.println("Die Zahl entspricht keiner Noteneinheit! Bitte geben Sie die "+i+".te Note erneut ein: ");
    zahl=In.readInt();
    }

    damit wäre das problem gelöst... also zahl größer als 15 danach aufforderung neue zahl und dann überprüfung ob diese über 15 ist, wenbn

    aber gebe ich jetzt eine zahl zu groß ein, dann eine zahl unter null (bis dahin alles okay)... dann aber wieder eine zu große zahl, nimmt er sie an... das soll er ja aber nicht???

    was tue ich?



  • Hallo

    Nutz doch mal den Debugger...

    chrische



  • Du solltest nur eine while-Schleife verwenden und dort die Bedingung verbessern:

    while(zahl<0 || zahl>15)
    { /* ... */}
    


  • nach soetwas hab ich gesucht, mit dem ich in die while schleife zwei bedingungen schreibe! kante das bisher noch nicht.

    danke!

    hab mein programm nun fertig, wie kan ich das noch schöner gestalten? zb farbe etc


Anmelden zum Antworten