Java - Schule


  • bolop
  • 1368 Aufrufe 9 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java - Schule

    hi


    also wir lernen in der shcule java und schriebn bald eine arbeit darüber aber wir hatten schon unsere letzte stunde in informatik !

    wir haben ein arbeitsblatt bekommen !

    leider verstehe ich das nicht so ganz

    ...

    mein prob. wie können die variablen gezählt werden die z.b. über durschschnitts temperatur liegen. (und dieser wert dan angezeigt werden)

    ????







    mfg
  • Naja hmmm ich will jetzt mal nicht den pessimisten miemen, aber wenn du das nicht hinbekommst, wirds sehr schwierig werden :(
    Und Aufgabe 1 ist in der Regel auch immer die leichteste...
    Naja soweit so gut.
    Ein Java Problem ist es jedenfalls nicht,
    das kann mit jeder Sprache gelöst werden.

    Die Grundidee:
    Array anlegen mit den Temperaturwerten und schon kanns losgehen.
    Durschnittstemp:
    Array von Anfang bis Ende durchlaufen und Werte aufsummieren, danach durch die Länge des Arrays teilen -> fertig
    Die nächsten 3 Aufgaben sind prinzipiell immer das gleiche Schema nur mit anderer Prüfung.
    Wieder Array von Anfang bis Ende durchlaufen und Wert prüfen mit Mittelwert, bei true, counter erhöhen.
    Am Ende Ausgabe des counters.

    Das wars.
    Wenn ich fertig bin mit Pokern, kann ich das ganze noch in Source Code giessen :D

    *edit*
    Bin zwar immer noch am Pokern, aber das ging auch nebenbei:

    PHP-Quellcode

    1. class Test {
    2. public static void main(String args[]) {
    3. double[] MonatsTemp = { 21.0, 20.5, 20.0, 15.0, 16.0, 17.0, 18.0, 19.0,
    4. 20.0, 19.5, 20.0, 21.0, 18.0, 19.0, 20.0, 18.0, 16.0, 15.0, 16.0,
    5. 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 18.0, 16.0, 14.0, 16.0 };
    6. double mittelwert = 17.0;
    7. /* Durchschnitt
    8. * the old way
    9. */
    10. double summe = 0.0;
    11. for ( int i = 0; i < MonatsTemp.length; i++){
    12. summe = summe + MonatsTemp[i];
    13. }
    14. /* the new way
    15. *
    16. * Die "neue" foreach Schleife
    17. * for( double tempelement: MonatsTemp){
    18. summe = summe + tempelement;
    19. }
    20. *
    21. */
    22. double durchschnitt = summe / MonatsTemp.length ;
    23. /*
    24. * Anzahl der Tage unter, über oder gleich dem Mittelwert
    25. */
    26. int counter1 = 0;
    27. int counter2 = 0;
    28. int counter3 = 0;
    29. for ( int i = 0; i < MonatsTemp.length; i++){
    30. if(MonatsTemp[i] < mittelwert)
    31. counter1++;
    32. if(MonatsTemp[i] > mittelwert)
    33. counter2++;
    34. if(MonatsTemp[i] == mittelwert)
    35. counter3++;
    36. }
    37. System.out.println("Die Durchschnittstemperatur liegt bei: " + durchschnitt + " Grad");
    38. System.out.println("Anzahl Tage unter stat. Mittelwert: " + counter1);
    39. System.out.println("Anzahl Tage über stat. Mittelwert: " + counter2);
    40. System.out.println("Anzahl Tage gleich stat. Mittelwert: " + counter3);
    41. }
    42. }
    Alles anzeigen


    Gibt noch einiges zu verbessern, aber hatte keine Lust mehr da noch gross weiter Zeit reinzuhängen. Das Ergebnis ist auch nicht auf Richtigkeit überprüft worden.
    Naja und man kann eigentlich auch alles in eine Schleife hauen...
    Es ist im Kommentar noch die neue foreach Schleife mit dabei, so würde man das derzeit machen, da es so eleganter ist. Etwas verständlicher mag aber die alte Version sein, deswegen hab ich die genommen.

    Gruß,
    stelzi
  • vielen dank

    aber so weit wrane wir noch nicht im unterricht !

    deshalb konnte ich das noch nicht aber ich fands super von dir das du mir das so shcnell geschrieben hast !

    dein code ist jetzt bei uns stunden inhalt geworden big THX !


    ;)

    mfg

    PS: war natürlich alles rochtig auch von den werten her nochmal danke ich habs wenigsten jetzt verstanden
  • Ah, dann hab ich das irgendwie falsch verstanden.

    Freut mich geholfen zu haben. Vielleicht ist ja einiges etwas klarer geworden,
    auch wenn es net umbedingt das beste ist für den Lerneffekt die komplette Lösung hingeklatscht zu bekommen ;)
    Btw, die meiste und nervigste Arbeit war das Array anzulegen mit den ganzen Werten abgeschrieben von dem Angabenblatt ^^
  • SO wir ham ne arbeit geschriebn hehe hab 11 punkte reingehaune lief alles
    super aber da gibts was was ich net versteht in dem letzten programm so ich
    hab das mal eingesacannt und mein quellcode dazu geschmiert...!!!








    Das ist zu aufgabe 3.1

    PHP-Quellcode

    1. // Zinsberechnung4800
    2. // Zweck: Klassenarbeit
    3. public class Zinsberechnung4800{
    4. // bennenung der class
    5. static public void main(String[] args){
    6. // Variablen zuweisen
    7. double kapital = 4800;
    8. double zinsen = 1.05;
    9. double kapitalMitZinsen = kapital*zinsen;
    10. double kapitalMitZinsenZwei = kapitalMitZinsen*zinsen;
    11. //Ausgabe der Ergebnisse
    12. System.out.println("Startkapital " +kapital+ " -- Zinsatz 5% " );
    13. System.out.println("Erziehltes Kapital nach einem Jahr " +kapitalMitZinsen );
    14. System.out.println("Erziehltes Kapital nach zwei Jahren " +kapitalMitZinsenZwei );
    15. //abfrage und Ausgabe der Ergebnisse
    16. if (kapitalMitZinsenZwei >= 5000)
    17. {
    18. System.out.println("Super Sie haben 5000 Euro oder mehr Gespart !!!");
    19. }
    20. else
    21. {
    22. System.out.println("Leider haben Sie noch nicht Gernug gespart das wird schon sparen Sie weiter.");
    23. }
    24. }
    25. }
    Alles anzeigen






    Das ist zu aufgabe 3.1

    PHP-Quellcode

    1. // Zinsberechnung4000
    2. // Zweck: Klassenarbeit
    3. public class Zinsberechnung4000{
    4. // bennenung der class
    5. static public void main(String[] args){
    6. // Variablen zuweisen
    7. double kapital = 4000;
    8. double zinsen = 1.05;
    9. double kapitalMitZinsen = kapital*zinsen;
    10. double kapitalMitZinsenZwei = kapitalMitZinsen*zinsen;
    11. //Ausgabe der Ergebnisse
    12. System.out.println("Startkapital " +kapital+ " -- Zinsatz 5% " );
    13. System.out.println("Erziehltes Kapital nach einem Jahr " +kapitalMitZinsen );
    14. System.out.println("Erziehltes Kapital nach zwei Jahren " +kapitalMitZinsenZwei );
    15. //abfrage und Ausgabe der Ergebnisse
    16. if (kapitalMitZinsenZwei >= 5000)
    17. {
    18. System.out.println("Super Sie haben 5000 Euro oder mehr Gespart !!!");
    19. }
    20. else
    21. {
    22. System.out.println("Leider haben Sie noch nicht Gernug gespart das wird schon sparen Sie weiter.");
    23. }
    24. }
    25. }
    Alles anzeigen






    Das ist zu aufgabe 4.2 HIER BEKOOMME ICH 2ERGEBNISSE AUSGEGEBEN WARUM ?

    PHP-Quellcode

    1. /**
    2. * Transportkosten
    3. * Zweck: Klassenarbeit */
    4. public class Transportkosten {
    5. // bennenung der class
    6. static public void main(String[] args) {
    7. // Variablen zuweisen und Rechnung
    8. double ware = 10;
    9. double warenwertl = 193;
    10. double warenwert2 = 194;
    11. double transportl = 29;
    12. double transport2 = ware*0.15;
    13. //abfrage und Ausgabe der Ergebnisse
    14. if (ware <= warenwertl) {
    15. System.out.println("Ihre Versandkosten betragen " +transportl+ " Euro");
    16. }
    17. if ((ware > warenwert2) && (transport2>79))
    18. {
    19. System.out.println("Ihre Versandkosten betragen 79 Euro. ");
    20. }
    21. else { System.out.println("Ihre Versandkosten betragen " +transport2+ " Euro");
    22. }
    23. }
    24. }
    Alles anzeigen
  • Also wenn du nur die Lösung zu deinem Problem haben willst,
    das ist ganz einfach:

    Wenn deine erste If Abfrage (ware <= warenwert1) true ergibt, dann gibt natürlich die nächste Abfrage false, ABER die hat noch eine else Bedingung die dann natürlich auf jedenfall ausgeführt wird.
    Also wird
    System.out.println("Ihre Versandkosten betragen " +transportl+ " Euro");
    und
    System.out.println("Ihre Versandkosten betragen " +transport2+ " Euro");
    natürlich immer zusammen ausgeführt.

    das ganze müsste sich einfach damit beheben lassen:

    PHP-Quellcode

    1. if (ware <= warenwertl) {
    2. System.out.println("Ihre Versandkosten betragen " +transportl+ " Euro");
    3. }
    4. else if ((ware > warenwert2) && (transport2>79))
    5. {
    6. System.out.println("Ihre Versandkosten betragen 79 Euro. ");
    7. }
    8. else { System.out.println("Ihre Versandkosten betragen " +transport2+ " Euro");
    9. }

    somit sind alle 3 Abfragen miteinander verkettet und es kann nur eine Anweisung ausgeführt werden.

    Wenn ich mir mal die Aufgabe angeguckt habe, kann ich mir ja mal selber nen Code überlegen :D

    Ansonsten sind mir auf die schnelle 3 Feinheiten aufgefallen.
    1. Ich hab noch nie Klassennamen mit Zahlen kombiniert gesehen. (Vielleicht liegt das auch nur daran das ich noch nie riesige Programme gesehen habe ^^)
    2. Du schreibst immer static public void main
    Der Konforme Code lautet aber public static void main
    Funktionieren tut beides. Aber Imho ist man sich darüber eingekommen das es so notiert wird :)
    3. Für Werte die nur geprüft werden, solltest du in der Regel keine Variable verwenden. Also so Geschichten wie warenwert2 und warenwert1. Das führt oft nur zu Fehler, da du immer überprüfen musst was für einen Wert du der Variable eigentlich zugewiesen hast. Setze hier lieber den Wert, also 193 z.b. direkt in die If Abfrage. Somit siehst du immer sofort was an der Stelle ausgewertet wird.

    P.S.:
    Ausgerechnet die interessanteste Aufgabe (3.2) musstet ihr nicht programmieren ^^
  • stelzi schrieb:



    P.S.:
    Ausgerechnet die interessanteste Aufgabe (3.2) musstet ihr nicht programmieren ^^



    dazu sollten wir ein strucktogramm schreiben schreiben^^

    war ne mittlere Katastrophe..

    ich hab das nicht verstanden wie man das umsetzten soll...

    mal ne andere frage das sind ja alles ausgaben wie sihet das mit eingaben aus ist das viel schwieriger ?

    mfg




    -----

    mal noch ne andere frage ich hab das bisher nicht verstanden wie das funktionieren soll

    was GENAU bedeutet diese zeile:
    ------------------------------------
    public static void main(String[] args)
    ------------------------------------

    und ich hab manchmal auch shcon geshehen das leuet nicht args sondern arguments schreiben ist das ein untershcied oder nicht ?
  • bolop schrieb:


    mal ne andere frage das sind ja alles ausgaben wie sihet das mit eingaben aus ist das viel schwieriger ?


    Kurz gesagt, ja! :D
    Siehst du ja dann in meinem Codebeispiel, da hab ich mal ein Eingabebeispiel angefügt. Allerdings kann in Java auf die unterschiedlichste Weise eine Eingabe vom Benutzer entgegen genommen werden. Etwas "einfacher" wirds dann mit GUI Unterstützung.

    bolop schrieb:


    mal noch ne andere frage ich hab das bisher nicht verstanden wie das funktionieren soll

    was GENAU bedeutet diese zeile:
    ------------------------------------
    public static void main(String[] args)
    ------------------------------------

    und ich hab manchmal auch shcon geshehen das leuet nicht args sondern arguments schreiben ist das ein untershcied oder nicht ?


    Wie das genau heisst ist völlig egal. Als Anfänger sieht man das nicht ich weiss, denn diese Frage stellt sich am Anfang irgendwie jeder.
    Aber wenn man genau hinschaut und zumindest schon mal Funktionen kennen würde. Dann würde man sehen das das einfach nur ein Variablenname ist. Der könnte heissen wies dir grade lustig ist.
    Das heisst einfach nur das die Funktion als Eingabe einen Array von Strings bekommt.
    Ich glaub man könnte es sogar weglassen. Bin mir da grade nicht sicher.
    Naja jedenfalls brauchst du das dafür, falls du deinem Programm beim Aufruf Parameter übergeben willst, die es dann verarbeitet.
    Hab das in meinem Beispielcode gleich eingebaut, dann siehste das schon ungefähr wies geht.

    Nur damit das dann funktioniert muss man das Programm auch jetzt mit Parameter aufrufen.
    Also in etwa so in die Kommandozeile (ausm stegreif)
    "java Test 5000 10000"
    Damit wird dann Test ausgeführt mit 5000 als Startbetrag und 10000 als Zielbetrag.


    PHP-Quellcode

    1. class Test {
    2. static public void main(String args[]) {
    3. if(args.length == 2){
    4. double einzahlung = Double.parseDouble(args[0]);
    5. double zielbetrag = Double.parseDouble(args[1]);
    6. double zinssatz = 0.015;
    7. double zinsinc = 0.005;
    8. double sparbetrag = einzahlung;
    9. int jahr = 0;
    10. for(int i = 1; sparbetrag < zielbetrag; i++){
    11. zinssatz = zinssatz + zinsinc;
    12. sparbetrag = sparbetrag + sparbetrag * zinssatz;
    13. jahr = i;
    14. }
    15. System.out.println("Sie haben mit einem Betrag von " + einzahlung + " Euro zum sparen begonnen.");
    16. System.out.println("Ihr Sparziel betrug " + zielbetrag + " Euro.");
    17. System.out.println("Dieses haben sie nach " + jahr + " Jahren erreicht.");
    18. System.out.println("Ihr aktuelles Sparguthaben beträgt " + sparbetrag + " Euro");
    19. System.out.println("Ihr letzter erhaltener Zinssatz war " + zinssatz*100 + "%.");
    20. }
    21. else
    22. System.out.println("Sie haben das Programm mit falschen Parametern aufgerufen. GENAU 2 Argumente erlaubt!");
    23. /*
    24. * Eingabebeispiel
    25. BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    26. String Text;
    27. try {
    28. System.out.print(
    29. "Geben Sie bitte einen Text ein: ");
    30. Text = input.readLine();
    31. }
    32. catch(IOException e){
    33. };
    34. // Falls z.b. ein Integer erwartet wurde
    35. int zahleingabe = Integer.parseInt(Text);
    36. *
    37. */
    38. }
    39. }
    Alles anzeigen