Hilfe Java Hausaufgabe

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

    • Hilfe Java Hausaufgabe

      Guten Tag,
      wir lernen gerade in der Schule Java , und arbeiten gerade mit einem Programm namens greenfoot, weiß net ob das wer kennt.
      Da wird das ganze verdeutlicht durch so Szenarien wo man die einzelnen Objekte programmieren kann, wir arbeiten mit einem "Spinnenszenario".
      Wir sollen jetz etwas schreiben, das das Programm mit einer Fehlermeldung abbricht, sobald nur 1 Objekt in der Welt ist.
      Gelöst hab ich das so(ich poste nur den relevanten Teil):
      public class Spinne2()
      {
      Double fliegen2 = Double.valueOf(getWorld().numberOfObjects()); //getWorld() greift auf die Welt zu, und numberOfObjects() gibt die Anzahl aller Objekte die zur Zeit in der Welt sind aus
      if(fliegen2.equals("1"))
      {
      System.err.println("Abbruch durch break! Nur 1 Objekt! Keine Fliege vorhanden!");
      break;
      }
      }

      Wenn ich nun nur 1 Objekt in die Welt setze, sollte das Programm ja eigentlich abbrechen, jedoch tut es das nicht.
      Das merkwürdige ist, dass wennich die Aussage verneine, und schreibe: if(!fliegen2.equals("1")) etc., dann bricht es immer ab, egal wieviele Objekte in der Welt sind.

      Kann mir jemand meinen Fehler erklären? Hab ich einen Denkfehler gehabt, oder ist das Programm eifnach bisschen verbuggt?

      Danke,

      MfG
    • Stell mal den ganzen Code rein, dann kann ich dir evtl helfen ;)

      Edit:
      Probier mal

      Quellcode

      1. if(fliegen2 == 1.0)


      bzw

      Quellcode

      1. if(fliegen2.equals(1.0))


      wenn man ne double variable mit ner konstante vergleichen will, muss die Variable mit der komma stelle angegeben werden..

      warum machst die eig. double und nicht int?

      und warum holst du dir den wert von numberOfObjects() über die Statische Methode von double rein und nicht einfach mit x = f(); ?

      <Zinnsoldat> Warbringer willst heute auch das ravens game casten? ^^
      <@Nappo> überlastet den armen Warbringer doch nich so :)
      <@Nappo> wobei er is chinese die arbeiten mindestens 25 stunden am tag und 200 Stunden in der Woche

      ProudBavarian schrieb:

      € netter guide twoplay, aber dein ava suckt trotzdem :)
      Guten Morgen an:
      Muh, Proud, Sleepy, Hi2u, Seren, Incognito, Wing, Juff, Sic, banez-, arrow^gunz, Cloud, Zenarius, Tobi, q0ry und der Rest des DS-Stammtischs


    • Hatte nicht den ganzen Quelltext gepostet, weil da noch eine andere Aufgabe drinsteckt.(Die ursprüngliche Aufgabe war, dass die Spinne geradeausgeht, bis sie eine fliege findet, diese frisst. und fertig. Dabei muss sie in der Lage sein, über gestapelte Hindernisse zu laufen. Sie darf nur auf dem Boden laufen.Am ende soll sie alle Schritte die sie gemacht hat ausgeben. Zusätzlich soll sie halt abbrechen, wenn es keine Fliege gibt. Das hab ich halt so geregelt jetz, wie oben beschrieben, weil ja dann nur die Spinne in der Welt ist, also nur 1 Objekt, und es abbrechen sollte.)
      Hier der ganze Quelltext:
      public class Spinne2()
      {
      public int Aufgabe1()
      {
      Double fliegen2 = Double.valueOf(getWorld().numberOfObjects()); //getWorld() greift auf die Welt zu, und numberOfObjects() gibt die Anzahl aller Objekte die zur Zeit in der Welt sind aus
      int i = 0;
      while (!fliegeGefressen()) // Abbruchbedingung: Noch keine Fliege gefressen
      {
      if(fliegen2.equals(1))
      {
      System.err.println("ERROR! NIX FLIEGE!");
      setLocation(1,1);
      break;
      }
      tempo(7);
      if(fliegeAmPlatz())
      {
      fliegeFressen(); // Fressen einer Fliege ,wenn eine auf dem Platz liegt.
      }
      if(hindernisRechts() || hindernisVorn())
      {
      linksDrehen();
      }
      if(!hindernisRechts())
      {
      rechtsDrehen(); // Beide if-Anweisungen zum übersteigen von Hindernissen. Der Boden der Spinne wird auch durch Hindernisse dargestellt.
      }
      if(!fliegeGefressen())
      {
      schritt(); // Schritt, Erhöhung einer Variable
      i++;
      }
      }
      return i; // Ausgabe der Variable
      }
      }

      Hoffe das hilft.
      Anbei ein Screen des Aufbaus des Problems, Dicke/Anzahl/Position der zu übersteigenden Hindernisse ist variabel, nur 1 Fliege soll vorhanden sein, Position von der aber auch variabel. Halt Abbruch, wenn keine Fliege vorhanden ist. Mit 2.0 gehts auch nicht.

      MfG
      Dateien
      • aufgabe.JPG

        (166,98 kB, 54 mal heruntergeladen, zuletzt: )
    • Funktioniert auch nicht.
      Das merkwürdige ist, ich hab ja oben erzählt, dass wenn ich if(!fliegen2.equals(1)) etc. schreibe, das Programm sofort abbricht, egal was ich mache, sobald ich es starte.
      Wenn ich schreibe if(fliegen2 > 1) passiert dasselbe.

      MfG
    • Mhh vll ist ja in der numberOfObjects() Methode ein Fehler? Stell mal die rein..

      <Zinnsoldat> Warbringer willst heute auch das ravens game casten? ^^
      <@Nappo> überlastet den armen Warbringer doch nich so :)
      <@Nappo> wobei er is chinese die arbeiten mindestens 25 stunden am tag und 200 Stunden in der Woche

      ProudBavarian schrieb:

      € netter guide twoplay, aber dein ava suckt trotzdem :)
      Guten Morgen an:
      Muh, Proud, Sleepy, Hi2u, Seren, Incognito, Wing, Juff, Sic, banez-, arrow^gunz, Cloud, Zenarius, Tobi, q0ry und der Rest des DS-Stammtischs


    • Ähm ich kann die Methode nicht reinstellen, die ist irgendwo im Programm verborgen.
      Das ist ja sonen Programm um einem Java näher zu bringen, und da wurde halt viel versteckt vom Progger, damit man sich nichts kaputt macht.
      Und da mit dem Programm vergleichsweise viele Schulen arbeiten, glaube ich jetz nicht, dass in einer vom Programm vorgegebenen Methode etwas kaputt ist, aber kann mich natürlich auch irren, naja kann sie leider nicht reinstellen.
      Hab ich aber keinen Denkfehler, und es sollte eigentlich klappen?
      Wenn ja, sag ich das so dem Lehrer.

      MfG
    • Achsooo! jetzt kapier ichs erst :D

      tu mal das Double.valueOf( weg müsste so auch gehn..
      und probier mal andere datentypen wie integer

      <Zinnsoldat> Warbringer willst heute auch das ravens game casten? ^^
      <@Nappo> überlastet den armen Warbringer doch nich so :)
      <@Nappo> wobei er is chinese die arbeiten mindestens 25 stunden am tag und 200 Stunden in der Woche

      ProudBavarian schrieb:

      € netter guide twoplay, aber dein ava suckt trotzdem :)
      Guten Morgen an:
      Muh, Proud, Sleepy, Hi2u, Seren, Incognito, Wing, Juff, Sic, banez-, arrow^gunz, Cloud, Zenarius, Tobi, q0ry und der Rest des DS-Stammtischs


    • Wenn ich valueOf wegmache, sagt er mir beim kompilieren, found int but expected java.lang.Double.
      Mit Integer o.Ä. gehts net.
      Ich mach jetz erstma nen Dota, vllt wird mir ja danach der Kopf klarer, oder wer hat ne Lösung gefunden.

      MfG
    • Schick mir mal das ganze ;)

      ICQ Nr is im Profil

      <Zinnsoldat> Warbringer willst heute auch das ravens game casten? ^^
      <@Nappo> überlastet den armen Warbringer doch nich so :)
      <@Nappo> wobei er is chinese die arbeiten mindestens 25 stunden am tag und 200 Stunden in der Woche

      ProudBavarian schrieb:

      € netter guide twoplay, aber dein ava suckt trotzdem :)
      Guten Morgen an:
      Muh, Proud, Sleepy, Hi2u, Seren, Incognito, Wing, Juff, Sic, banez-, arrow^gunz, Cloud, Zenarius, Tobi, q0ry und der Rest des DS-Stammtischs


    • Ok du holst die am anfang ja alle objekte, da zählt die spinne doch auch mit oder also wird das nie 1 werden....

      EDit: Hm doch nicht das ist ja der sinn des programms, das es abbricht wenn nur mehr die spinne da ist, hm da find ich die variable bennenung etwas komisch...

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von R@Dd€viL ()

    • Meeeensch auf das hätte ich auch selber drauf kommen können.. Arg..

      <Zinnsoldat> Warbringer willst heute auch das ravens game casten? ^^
      <@Nappo> überlastet den armen Warbringer doch nich so :)
      <@Nappo> wobei er is chinese die arbeiten mindestens 25 stunden am tag und 200 Stunden in der Woche

      ProudBavarian schrieb:

      € netter guide twoplay, aber dein ava suckt trotzdem :)
      Guten Morgen an:
      Muh, Proud, Sleepy, Hi2u, Seren, Incognito, Wing, Juff, Sic, banez-, arrow^gunz, Cloud, Zenarius, Tobi, q0ry und der Rest des DS-Stammtischs


    • Aaah ja ihr habt recht, die ganzen Hindernisse zählen ja auch noch mit auch als Objekte.
      Das hab ich garnicht bedacht, na dann mussichs irgendwie anders lösen, leider kann man nicht abfragen, ob nur welche einer bestimmten klasse da sind, jedenfalls krieg ich dann immer eine Fehlermeldung, die wir in der Schule auch alle bekommen haben.

      MfG
    • Ok, eine Frage hätte ich doch noch, vllt. könnt ihr mir ja wirklich dabei helfen.
      Und zwar, eine Methode ist so beschrieben:
      getObjects
      public java.util.List getObjects(java.lang.Class<?> cls)
      Get all the objects in the world, or all the objects of a particular class.
      If a class is specified as a parameter, only objects of that class (or its subclasses) will be returned.


      Parameters:
      cls - Class of objects to look for ('null' will find all objects).
      Returns:
      A list of objects.

      wennich schreibe if(getWorld().getObjects(Fliege.class).equals(0)) etc.,
      dann führt er das Programm aus, obwohl kein Object der Klasse Fliege vorhanden ist, wie ist das zu erklären?

      MfG
    • Abend,
      ich hab mir gedacht, ich kann den Thread hier wiederbeleben und muss keinen neuen machen.
      Ich hab etwas mit BlueJ rumgespielt, auch eine Entwicklungsumgebung.
      Ich habe mir ein Figuren-Projekt runtergeladen, in dem einige Figuren-Klassen bereitgestellt werden.
      Wollte nun ein Objekt erstellen und diesem zufällig eine Farbe zuweise.
      Habe dies wie folgendermaßen gelöst:

      Java-Quellcode

      1. import java.util.Random;
      2. /**
      3. * Klasse zur zufälligen Verteilung einer Farbe an ein Quadrat.
      4. * Diese Verteilung soll nur 2x geschehen.
      5. *
      6. * @author Matze
      7. * @version 09.12.08
      8. */
      9. public class Maxg0r
      10. {
      11. private Random r1;
      12. private Quadrat q1;
      13. private String str1;
      14. private int i;
      15. private int n;
      16. /* Initialisiere die Objekte q1 und r1.
      17. * Weise n einen Wert zu(wichtig welche Zahlen die Zufallsentscheidung
      18. * beinhaltet.
      19. */
      20. public Maxg0r()
      21. {
      22. Quadrat q1 = new Quadrat();
      23. Random r1 = new Random();
      24. n = 5;
      25. }
      26. /*
      27. * Weise der oben deklarierten Variable i einen zufälligen Wert
      28. * bis ausschließlich des oben deklarierten Wertes n zu.
      29. * Entspricht dieser Wert verschiedenen Fällen, so wird dem String
      30. * str1 eine Farbe zugewiesen.
      31. */
      32. public void zufall()
      33. {
      34. for(int y = 0; y < 2;y++)
      35. {
      36. i = r1.nextInt(n);
      37. switch (i)
      38. {
      39. case 0:
      40. str1 = "rot";
      41. break;
      42. case 1:
      43. str1 = "gelb";
      44. break;
      45. case 2:
      46. str1 = "blau";
      47. break;
      48. case 3:
      49. str1 = "lila";
      50. break;
      51. case 4:
      52. str1 = "schwarz";
      53. break;
      54. default:
      55. str1 = "schwarz";
      56. break;
      57. }
      58. q1.farbeAendern(str1);
      59. q1.sichtbarMachen();
      60. }
      61. }
      62. }
      Alles anzeigen


      Kompiliert hat er ohne Probleme. Nur wenn ich jetz die Methode "zufall" ausführe, dann gibt er mir folgende Fehlermeldung aus:
      "java.lang.NullPointerException
      at Maxg0r.zufall(Maxg0r.java:38 )"

      Markiert wird dabei die Zeile " i = r1.nextInt(n); "
      Komme net darauf, was mein Fehler ist.
      Hoffe mir kann wer behilflich sein =).
      farbeAendern und sichtbarMachen sind von dem Projekt bei BlueJ bereitgestellte Methoden.


      MfG

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Maxga ()

    • ..aber deine Formatierung tut in den Augen weh...
      I'm not a coward, I've just never been tested
      I'd like to think that if I was I'd pass
      Look at the tested and think There but for the grace go I!
      Might be a coward, I'm afraid of what I might find out