Übung 2

  • Java

  • buba
  • 1293 Aufrufe 6 Antworten

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

  • Hey leute,

    habs versucht die nächste Aufgabe selber zu lösen, habs auch fast geschafft, doch der Output entspricht nicht meinen Wünschen.
    ich möchte das er zuerst sagt was für ein Tag das eingegebene Datum ist, und dannach ob es ein schaltjahr ist, doch bei mir mischt! wieso?

    PHP-Quellcode

    1. import java.util.*;
    2. public class Aufgabe5a {
    3. public static void main (String args[]) {
    4. int tag, monat, jahr,
    5. jh, ja, julian_tag;
    6. Scanner sc = new Scanner (System.in);
    7. System.out.println("Tag: ");
    8. tag = sc.nextInt(); //("Tag: ");
    9. System.out.println("Monat: ");
    10. monat = sc.nextInt();//("Monat: ");
    11. System.out.println("Jahr: ");
    12. jahr = sc.nextInt();//("Jahr: ");
    13. System.out.print("Das Datum " + tag + "." + monat + "." + jahr + " ist ein ");
    14. jh = jahr / 100; /* Jahrhundert */
    15. ja = jahr % 100; /* Jahr im Jahrhundert */
    16. if (monat>2) {
    17. monat -=3;
    18. } else {
    19. monat += 9;
    20. ja--;
    21. }
    22. if (jahr%400 == 0 || jahr%100 != 0 && jahr%4 == 0) {
    23. System.out.println(" Das Jahr " +jahr +" ist ein Schaltjahr");
    24. }
    25. else
    26. {
    27. System.out.println(" Das Jahr " +jahr +" ist kein Schaltjahr");
    28. }
    29. tag = (146097*jh)/4 + (1461*ja)/4 + (153*monat+2)/5 + tag + 1721119;
    30. switch (tag%7) {
    31. case 0:
    32. System.out.println("Montag");
    33. break;
    34. case 1:
    35. System.out.println("Dienstag");
    36. break;
    37. case 2:
    38. System.out.println("Mittwoch");
    39. break;
    40. case 3:
    41. System.out.println("Donnerstag");
    42. break;
    43. case 4:
    44. System.out.println("Freitag");
    45. break;
    46. case 5:
    47. System.out.println("Samstag");
    48. break;
    49. case 6:
    50. System.out.println("Sonntag");
    51. break;
    52. }
    53. }
    54. }
    Alles anzeigen


    Auser dem weiss jemand wie ich das ganze dann in ne endlos shlaufe bringe?
    so das er immmer wieder das gleiche fragt, als ob ich den code immer neustarten würde, doch eben automatisch. Mit der funktion
    do...... while schlaufe und
    Verwendung von true für unendlichen loop.


    Vielen Herzlichen Dank
  • Bin grad dabei .. Aber ich brauch dazu das womit man berechnet was für ein Tag ein bestimmtes Datum war /ist .


    Also hab da mal nen bissi dran gescharaubt ..
    müsstest jz nurnoch dafür sorgen das die Variable "Tag" kein Integer mehr ist .. bzw das sie als ganzzahl angezeicht wird sonst wird aus 27.12.1988 das hier ==> 2447615.12.1988
    Oder das hat was mit deinen Rechnungen zu tun die du gemacht hast und die ich net ganz raffe ^^ also wenn du mir sagst wie man den Tag bestimmt dann kann ich dir helfen ^^ wenn nicht musst du damit zurecht kommen :

    PHP-Quellcode

    1. import javax.swing.*;
    2. public class Aufgabe5a {
    3. /* Autor:Scarecraft */
    4. public static void main (String args[]) {
    5. int
    6. tag;
    7. int
    8. monat;
    9. int
    10. jahr;
    11. int
    12. jh;
    13. int
    14. ja;
    15. int
    16. monat2;
    17. //Eingabe
    18. String t=JOptionPane.showInputDialog("Tag:");
    19. tag=Integer.parseInt(t);
    20. String m=JOptionPane.showInputDialog("Monat:");
    21. monat=Integer.parseInt(m);
    22. String j=JOptionPane.showInputDialog("Jahr:");
    23. jahr=Integer.parseInt(j);
    24. //Eingabe
    25. monat2=monat;
    26. jh = jahr / 100; /* Jahrhundert */
    27. ja = jahr % 100; /* Jahr im Jahrhundert */
    28. if (monat>2) {
    29. monat2 -=3;
    30. } else {
    31. monat2 += 9;
    32. ja--;
    33. }
    34. tag = (146097*jh)/4 + (1461*ja)/4 + (153*monat+2)/5 + tag + 1721119;
    35. switch (tag%7) {
    36. case 0:
    37. JOptionPane.showMessageDialog(null,"Dieser Tag war ein Montag");
    38. break;
    39. case 1:
    40. JOptionPane.showMessageDialog(null,"Dieser Tag war ein Dienstag");
    41. break;
    42. case 2:
    43. JOptionPane.showMessageDialog(null,"Dieser Tag war ein Mittwoch");
    44. break;
    45. case 3:
    46. JOptionPane.showMessageDialog(null,"Dieser Tag war ein Donnerstag");
    47. break;
    48. case 4:
    49. JOptionPane.showMessageDialog(null,"Dieser Tag war ein Freitag");
    50. break;
    51. case 5:
    52. JOptionPane.showMessageDialog(null,"Dieser Tag war ein Sammstag");
    53. break;
    54. case 6:
    55. JOptionPane.showMessageDialog(null,"Dieser Tag war ein Sonnstag");
    56. break;
    57. }
    58. if (jahr%400 == 0 || jahr%100 != 0 && jahr%4 == 0) {
    59. JOptionPane.showMessageDialog(null,"Der"+ tag +"."+ monat +"."+ jahr +"ist ein Schaltjahr");
    60. } else {
    61. JOptionPane.showMessageDialog(null,"Das Jahr"+jahr+" ist kein Schaltjahr!");
    62. }
    63. }
    64. }
    Alles anzeigen
  • Hey Scarecraft, you are great!!!

    Dank deinem Beitrag hab ich gemerkt das bei meinem script ein { gefehlt hat. Nun läuft alles super, sooo macht lernen spass und ist nun auch für mich klar.

    Vielen dank.

    Doch ein problem bleibt noch, wie setze ich das ganze in ne endlooooos schleife??? Tipp vom Buch:
    do...... while schlaufe und
    Verwendung von true für unendlichen loop.

    Danke danke

    :tata: :blink:
  • do{
    .....
    }while(true)

    Für ne endlosschleife reicht aber auch eine einfache whileschleife.
    Die do while macht nur Sinn, wenn es mindestens einmal durchlaufen werden soll und dann jedesmal eine Abfrage kommt ob noch weiter durchlaufen werden soll.
    Hierzu setzt man dann z.b. eine Funktion ein.

    Ungefähr so
    do{
    .....
    }while(fortsetzen())

    und in der funktion frägst du dann den Nutzer ob er weitermachen will oder nicht, und je nachdem gibst du true oder false zurück
  • buba schrieb:

    stelzi

    Ist Richtig

    Vielen Dank Stelzi, war soooooooo nah dran, doch ohne dich wärs need gangen. Danke
    :D :tata: :)

    muss man was schreiben (close) wenn tread fertig? oder gibts da sowas need?


    Du must auf bearbeiten und als Präfix oder so close angeben ^^ glaub ich