Zum Inhalt springen

Ulfmann

Mitglieder
  • Gesamte Inhalte

    1.350
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    14

Alle Inhalte von Ulfmann

  1. Cool, aber - nur damit ich das richtig verstehe - das bezieht sich jetzt nich 100%ig auf mein konretes Beispiel oder ? Weil dann haut meine Lösung wieder nicht hin. Kannst du zur Not mal Quelltext dazu posten?
  2. Hi, ja, das sind ja die Base Cases, bzw. die Abbruchbedingungen. Die Hürde, oder die beiden Fragen, an denen ich mit meinem Ansatz nicht weiter kam, ist (1) stirbt ein Weibchen im 4. Monat oder im darauffolgenden? und (2) da in den ersten beiden Monate ja jeweils nur ein Weibchen vorhanden ist, wird es dann in Monat 4 und 5 bzw. 5 und 6 zweimal als "gestorben" gezählt oder dann abgezogen? Ich weiß, ich mach es sicherlich komplizierter als es ist, aber mein neuer Ansatz ging dann in die richtung: n = (n-1) + (n-2) - (zuwachs von (n-3)) Das stimmte auch mit meinen Skizzen und Nebenrechnungen überein. Nach etwas googeln und weiterer Hilfe hab ich dann ein ähnliches Beispiel gefunden, sodass die Lösung ziemlich sicher Folgendes ist: public int fib(int n) { if (n <= 0) return 0; if (n == 1) return 1; if (n == 2) return 1; else { return fib(n-1) + fib(n-2) - fib(n-5); } }
  3. Hallo, ich verzweifel hier an einer Übungsaufgabe. Die Fibonacci Reihe wird wohl bekannt sein, zur Sicherheit hier das Basisbeispiel: Angenommen, ein weibliches Kaninchen ist 2 Monate nach der Geburt fruchtbar und wirft dann jeden Monat genau ein neues, weibliches Kaninchen-Baby. Wenn mit einem Weibchen begonnen wird, sind es wie viele Weibchen nach 10 Monaten? Man geht davon aus, dass es ausreichend männliche Kaninchen gibt um die maximale "Produktion" zu gewährleisten und kein Hase stirbt. Damit kommt man ja schnell auf die Reihe 1,1,2,3,5,8,13,21,34,55 und das n-te Glied kann mit fib(n) = fib(n-1) + fib(n-2) definiert werden. Soweit, so gut. Nun - und da komm ich zu meinem Problem - sterben die Weibchen nach 4 Monaten. Es gilt also, eine Sterberate zu berücksichtigen. Mein erster Ansatz war fib(n) = fib(n-1) + fib(n-2) - fib(n-3) aber das kann nicht hinhauen. Das Ganze ist eine Übungsaufgabe zur Rekursion in Java. Da die Formulierung in Quelltext trivial ist, sobald man die Algorithmus gerafft hat, lass ich das auch erstmal weg. Ich bedanke mich für jede hilfreiche Idee. Gruß.
  4. Ulfmann

    Problem mit Rekursion

    Ja vielen Dank für die Hilfe, hat mich auch weiter gebracht. Meine Lösung is allerdings noch um einiges kürzer und verständlicher geworden: public class Recursion { public boolean prime(long n) { if(n == 1) return false; return prime(n, n - 1); } private boolean prime(long n, long m) { if (m == 1) { return true; } else if (n % m == 0) { return false; } else { return prime(n, m - 1); } } } public class RecursionTest { public static void main(String args[]) { Recursion prm = new Recursion(); boolean isDivisible = prm.prime(4); System.out.print("Primzahl: " ); if (isDivisible == true) System.out.print("ja"); else System.out.print("nein"); } } Und na klar wäre es mit ner herkömmlichen Schleife einfacher, aber es ging ja grad um Rekursion. Danke nochmal.
  5. Ulfmann

    Problem mit Rekursion

    So ungefähr dann?! Damit bekomm ich aber n StackOverFlow. Aber is die Richtung richtig? public boolean prime( int n) { if(n > 2) return prime(n, n-1); else if (n == 2) return true; else return false; } public boolean prime(int n, int d) { if(n % d == 0) return prime(1); else return prime(n, n-1); }
  6. Hi Leute, Ich häng an einer Übungsaufgabe zu Rekursion. Ich soll da nix abgeben und mach's aus freien Stücken, weil ich das kapieren will und muss. Die berühmte Aufgabe mit den Fibonacci Zahlen krieg ich hin, der Algorithmus lässt sich auch leicht begreifen. Hier mein Problem: A prime number is an integer that cannot be divided by any integer other than one and itself. For example, 7 is prime because its only divisors are 1 and 7. The integer 8 is not prime because its divisors are 1, 2, 4, and 8. Another way to define prime is: prime(N) = prime(N, N-1) prime(N, 1) = true prime(N, D) = if D divides N, false else prime(N, D-1) For example, prime(4) = prime(4,3) prime(4,3) = prime(4,2) prime(4,2) = false Another example, prime(7) = prime(7,6) prime(7,6) = prime(7,5) prime(7,5) = prime(7,4) prime(7,4) = prime(7,3) prime(7,3) = prime(7,2) prime(7,1) = true Translate the math-like definition of prime into two Java methods that return boolean. Use the % operator to test divisibility. Put your method into a class, write a testing class, and test your program. Aufgabenstellung ist also, eine Zahl n zu überprüfen, ob sie eine Primzahl ist - und zwar rekursiv auf Teilbarkeit durch alle ihre Vorgänger. Bisher hab ich das hier: public class Recursion { public boolean prime( int n) { if (n == 1) return true; if((n % n-1) != 0 ) return prime(n-1); else return false; } } public class RecursionTest { public static void main(String args[]) { Recursion prm = new Recursion(); boolean isDivisible = prm.prime(4); System.out.print("Primzahl: " ); if (isDivisible == true) System.out.print("ja"); else System.out.print("nein"); } } Dass es so nicht funktioniert, ist mir klar, nur ich hab keine Ahnung wie ich die prime() Methode richtig schreiben soll. Kann mir wer weiter helfen? Vielen Dank schonmal.
  7. Hallo, hast du es nun hinbekommen? Ich hing vor ner Weile an einem ähnlichen Problem, konnte es aber auch nur über static Referenzen lösen. Hier mein Vorschlag (ich habs eben frei Hand neu gemacht - möglich, dass es kürzer und eleganter geht, aber es tut, was du möchtest) import javax.swing.JFrame; public class Window extends JFrame { public Window() { setSize(300,350); setLocation(250,250); setLayout(null); repaint(); } } import java.awt.Insets; import javax.swing.JButton; import javax.swing.JTextField; public class FirstWindow extends Window { public static JTextField textField; public FirstWindow() { super(); setTitle("FirstWindow"); addComponents(); } private void addComponents() { JButton copyButton = new JButton("In das andere Fenster kopieren"); copyButton.setBounds(50,100,200,30); copyButton.setMargin(new Insets(0,0,0,0)); copyButton.addActionListener(WindowSwitch.getWindowSwitch()); copyButton.setActionCommand("firstWindow.copy"); add(copyButton); JButton closeButton = new JButton("Beenden"); closeButton.setBounds(50,250,130,30); closeButton.addActionListener(WindowSwitch.getWindowSwitch()); closeButton.setActionCommand("Close"); add(closeButton); textField = new JTextField(); textField.setBounds(50, 150, 200,30); add(textField); } } import java.awt.Insets; import javax.swing.JButton; import javax.swing.JTextField; public class SecondWindow extends Window { public static JTextField textField; public SecondWindow() { super(); setTitle("SecondWindow"); addComponents(); } private void addComponents() { JButton copyButton = new JButton("In das andere Fenster kopieren"); copyButton.setBounds(50,100,200,30); copyButton.setMargin(new Insets(0,0,0,0)); copyButton.addActionListener(WindowSwitch.getWindowSwitch()); copyButton.setActionCommand("secondWindow.copy"); add(copyButton); JButton closeButton = new JButton("Beenden"); closeButton.setBounds(50,250,130,30); closeButton.addActionListener(WindowSwitch.getWindowSwitch()); closeButton.setActionCommand("Close"); add(closeButton); textField = new JTextField(); textField.setBounds(50, 150, 200,30); add(textField); } } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class WindowSwitch implements ActionListener { private static WindowSwitch windowSwitch; public static WindowSwitch getWindowSwitch() { return windowSwitch; } public WindowSwitch() { windowSwitch = this; } public void createWindows() { FirstWindow firstWindow = new FirstWindow(); firstWindow.setLocation(100,100); firstWindow.setVisible(true); SecondWindow secondWindow = new SecondWindow(); secondWindow.setLocation(200,200); secondWindow.setVisible(true); } public void actionPerformed(ActionEvent evt) { if(evt.getActionCommand().equals("firstWindow.copy")) { SecondWindow.textField.setText(FirstWindow.textField.getText()); FirstWindow.textField.setText(""); } if(evt.getActionCommand().equals("secondWindow.copy")) { FirstWindow.textField.setText(SecondWindow.textField.getText()); SecondWindow.textField.setText(""); } if(evt.getActionCommand().equals("Close")) { System.exit(0); } } } public class MainClass { public static void main (String []args) { new WindowSwitch(); WindowSwitch.getWindowSwitch().createWindows(); } }
  8. @ Der Kleine: Wie gesagt, für den Fall, dass ich es hinterher abbummeln kann, kann ich dafür eine Woche am Stück in der Badewanne liegen @Guybrush: Naja ich denke die IT-Abteilung der DPA is schon interessant. Darüber hinaus gehts auchums Kontakte knüpfen und Hamburg is mal ne schöne Abwechslung zu Berlin.
  9. @ Crash: Das steht außer Frage, ganz klar. Sehe ich genauso. Mich nervt nur, dass ich von der hamburger Personalabteilung nahezu als unverschämt hingestellt werd, nur weil ich Bedenken geäußert hab, dass ich unter diesen Bedingungen Spaß und (wichtiger) den erdachten Profit haben werde. Glücklicherweise fällt in jedem Fall für mich nicht ein Euro eigenbeteiligung an. Aber was würdet ihr bevorzugen? Eine gestellte Unterkunft oder angerechnete Überstunden für das ganze Umherfahren? (Man bedenke, dass ich bei letzterer Option ne ganze Woche Urlaub abbummeln könnte:) )
  10. Wie dämlich ... Ich hab grad mit der Personalzuständigen aus Hamburg telefoniert und sie hat den groben Konsens der hier zusammen getragenen Argumente (die ich ja voll und ganz vertrete) irgendwie als belanglos hingestellt. Sie meinte, es sei ein Entgegenkommen von der DPA Hamburg, ein Vorteil, eine Bereicherung für mich, Einblicke dort zu erhalten und das rechtfertigt dann, dass ich dem (ein bisschen!) mehr Freizeit opfern kann. Das Geilste: "Sie haben im Zug ja auch Freizeit, sie können lesen, Musik hören etc., was ihnen eben Spaß macht." Hoffnungsschimmer: Gestern hab ich mich noch kurz mit meinem Chef hier über Optionen unterhalten (Unterkunft oder Reisezeit = Überstunden) und er meint, "das kriegen wir hin". Zugegeben, es ist mir schon unangenehm, dieses interessante Angebot noch auszuschlachten, aber die Bedingungen sind echt uncool.
  11. Hallo, Wie stelle ich es an, mehrere (gleiche) KeyEvents auseinander zu halten? Mir schwebt das Prinzip der ActionEvents vor, bei denen man dem Listener ja durch getActionCommand() eindeutig (und bestenfalls auch für den Leser verständlich) mitteilen kann, woher (von welchem Button z.B.) das Event gekommen ist. Bei KeyEvents ist mir nur bekannt: public void keyPressed( KeyEvent kev ) { if( kev.getKeyCode() == KeyEvent.VK_ENTER ) { // tue dies } if( kev.getKeyCode() == KeyEvent.VK_ESCAPE ) { // tue das } } Das bringt mir hier jedoch nichts. Ich hab auch mit getSource() und getClass() schon rumprobiert, aber erreiche nicht das, was ich will. Mein Listener soll letzten Endes eindeutig wissen, was er tun soll. Und das geht nur, wenn der "Absender" des Events identifiziert werden kann. Bitte um Ratschläge. Vielen Dank!
  12. Danke für eure Meinungen. @ Soldiar: Wohnung tauschen kommt nich in Frage, ich lass doch keinen andern Kerl mit meiner Freundin zusammen wohnen Die Fahrtkosten belaufen sich auf über 700€ für die 2x 2 Wochen, das find ich schon echt hart. Ich hatte auch schon die Idee, bei nem Kumpel zu pennen, bloß der will Geld dafür dann (nicht sehr edle Geste von ihm, aber egal). Das wird auch sicherlich problematisch bei der Abrechnung sein, oder ?! Ich ruf ma in Hamburg bei der Personalcheffin an und kann dann ja posten, was sie dazu meint.
  13. Also mein regulärer Ausbildungs - und Arbeitsplatz ist hier in Berlin. Mir ist auch erst vor Kurzem so richtig klar geworden, dass ich in dieser Tauschzeit täglich fast doppelt soviel Zeit aufbringen muss, wie gewöhnlich. Ich würde hier morgens kurz nach 7 losfahren, wäre um 9 in Hamburg und letzten Endes gegen 19.00 wieder zu Haus (wenn das mal so hinhaut). Das ist wirklich wesentlich mehr, somit steht es mir wohl zu, was dagegen zu haben. Edit: @bimei: Ja, die Zugfahten, knapp 2 Std und die Fahrt vom Bahnhof zur Firma, bzw. zu mir nach Haus. Macht unterm Strich ca. 5 Std pro Tag
  14. Moin, mich würde mal interessieren, was ihr zu folgender Sache meint. Meine Firma ist ein Tochterunternehmen der dpa (Deutsche Presse Agentur) und im Rahmen der Ausbildung, soll ich 2x 2 Wochen mit einem Azubi aus Hamburg tauschen. An sich kann das ja ganz cool sein, aber es ist vorgesehen, dass ich jeden Tag von Berlin nach Hamburg pendeln soll - macht insgesamt gute 5 Std Fahrtzeit pro Tag. Ich hab mich neulich mit nem Kumpel darüber unterhalten und er meint, dass sowas tierisch nervig is und schon nach dem ersten Tag keinen Spaß mehr macht. Muss/Soll ich auf ne Unterkunft bestehen? Oder das Vorhaben ganz und gar canceln? Was würdet ihr machen?
  15. Klingt sinnvoll ja, den Gedanken hatte ich im Ansatz auch schon. Bloß is das nich verhältnismäßig viel Aufwand, wenn ich - bevor ich was neues reinschreib - erstmal den kompletten Inhalt auslese, auseinander pflücke und dann in neuer Form (oder sogar wieder in der alten) neu reinschreib und speicher ?! Wobei der wichtige Punkt ist - wie du schon erwähnst - zu wissen, ob der Punktestand nicht irgendwo zwischendrin reingeschrieben werden muss. Hättest du einen einfacheren Weg ?
  16. Hallo Leute, ich hab Schwierigkeiten, mit der RandomAccessFile-Klasse zurecht zu kommen. Es geht um folgendes simple Beispiel: Ich habn Minigame gebaut und möchte es mit einer Highscore-Liste abschließen. Diese soll in einer externen Datei abgelegt werden. Es funktioniert auch soweit, dass mein Punktestand hineingeschrieben und gespeichert wird. Beim nächsten Durchlauf wird er wieder überschrieben, d.h. es steht immer nur ein Wert (String) drin. Hier mein Ansatz: private void showHighScoreList( int score ) { String playerName = ( String )JOptionPane.showInputDialog( gameFrame, "Bitte geben Sie Ihren Namen ein", JOptionPane.OK_OPTION ); try { RandomAccessFile highScoreList = new RandomAccessFile( "highscore.txt", "rw" ); if( playerName == null ) playerName = "SPIELER"; highScoreList.writeUTF( playerName + " : " + score + " Punkte" ); highScoreList.close(); } catch( IOException ae ) { } } Kann jemand weiter helfen ?
  17. Ulfmann

    sondierende Methode?

    Korrekterweise heißt der Datentyp boolean (in C# heißt er bool) und liefert dir nur einen Wahrheitswert, also true oder false.
  18. Ich arbeite mit Version 1.5. Ich hab natürlich alles so gemacht, wie von dir beschrieben (alles andere wäre ja Schwachsinn:) ) aber das tut eben nicht das, was ich will. Mir ist auch noch nicht klar, was gegen die setResizable(false)-Variante spricht. Angenommen ich würde überhaupt nicht wollen, dass man die Fenstergröße ändern kann. In dem Fall würde man ja auch von vornherein unterbinden, dass man's kann und nicht durch setPreferedSize(); Und ich will das eben eingeschränkt, ab nem gewissen Punkt.
  19. @ Wayne: Ich habs so übernommen, wie von dir gepostet. Was soll da jetzt passieren? Ich kann die Größe beliebig ändern - auch kleiner als (400,200), also die MinimumSize. Er tut nichts, wie auch ohne EventListener ?! @ Speedi: Das funktioniert auch, bloß mit dem Unterschied, dass er dann wieder auf die MinimumSize springt und nicht ein weiteres Kleinermachen blockiert. Und ja, ich rufe setminimumSize über den JFrame auf. Wie gesagt, es funktioniert ja, aber nicht so wie ich es mir vorgestellt hab. Danke aber für eure Beteiligung. Gerne weitere Gedanken dazu.
  20. Dafür hab ich grad folgendes ausprobiert: public void componentResized(ComponentEvent c) { currentWidth = this.getWidth(); currentHeight = this.getHeight(); if (currentWidth < minimumWidth) { setResizable(false); } if (currentHeight < minimumHeight) { setResizable(false); } setResizable(true); } Auf diese Weise lässt mein JFrame kein weiteres Verkleinern zu, sobald ich die Minimumgrenzen überschreiten will, was den gewünschten Blockiereffekt auslöst. Was mich daran aber ein wenig stört, ist, dass das Fenster etwas flackert, wenn setResizable() auf false und dann wieder auf true gesetzt wird. Die Idee, war, dass der Benutzer das Fenster ja durchaus wieder vergrößern können soll, auch wenn er die an die Minimumgrenze(n) gestoßen ist und daher setResizable(true); unumgänglich ist. Was denkt ihr?
  21. Hast du das mal getestet? Bei mir passiert dann nichts. Das Grundprinzip leuchtet mir schon ein, aber dennoch frage ich mich bei deinem Vorschlag, wie der JFrame (bzw. die Komponente, die auf die Größe aufpassen soll) denn wissen soll, dass das Fenster vom Benutzer verkleinert wurde. Und selbst sowas klappt nich: public void componentResized(ComponentEvent c) { frame.setMinimumSize(new Dimension(500,500)); } Gruß
  22. OK cool, vielen Dank! Ich habs mit der ComponentListener-Variante hinbekommen. Es ist zwar immernoch nicht das, was ich wollte, aber es bringt mich schonmal weiter. Eine Sache noch: Wenn ich nun meine Anwendung starte und zwischen einzelnen Panels hin und her zappe (die ihrerseits auch wieder einige Komponenten beinhalten), reagiert das Fenster unheimlich träge auf das ComponentEvent und ändert seine Größe entsprechend lahm und verzögert. Ist das jetzt einer der oft kritisierten Nachteile von Swing? Ich mags immer nicht, wenn Java nachgesagt wird, es sei langsam, aber das ist wohl ab einer bestimmten Komplexität nicht mehr zu leugnen. Seh ich das richtig ?
  23. Danke für die schnellen Antworten. Ich glaub aber, ich bin grad echt zu blöd, bzw. ich check's nicht. public class MainWindow extends JFrame { int x; int y; int width; int height; int minimumWidth = 700; int minimumHeight = 700; public MainWindow() { super ("Hauptmenü"); setBounds(x, y, width, height); setLayout(null); setJMenuBar (new MainMenuBar()); } public void setBounds(int x, int y, int width, int height) { x = 750; y = 70; width = 1000; height = 1000; if ((width = this.getWidth()) < minimumWidth) { width = minimumWidth; } if ((height = this.getHeight()) < minimumHeight) { height = minimumHeight; } super.setBounds(x, y, width, height); } } Jetzt malt er das Fenster in der Größe, in der es mindestens dargestellt werden soll (also 700x700 und nich 1000x1000). Was ich mich auch noch frage, ob hier nichn Event ausgelöst wird. Also jemand muss doch quasi beobachten, ob der JFrame kleiner geworden is oder nich und dann entsprechend reagieren. Oder nich ?!
  24. Hallo Leute, ich finde keine (verständliche) Lösung bei folgender Sache. Mein JFrame soll - ausgehend von der Initialgröße - vergrößerbar und verkleinerbar sein. Allerdings soll er nicht beliebig klein gemacht werden können. Die mehrmals beschriebene Variante, dass sich nach dem Resize-Event eine Größe in der Art von setPreferedSize(); einstellt und der JFrame zu dieser Größe "springt" gefällt mir nicht. Ich würde es schön finden, wenn man den JFrame nur bis zu bestimmten Abmessungen verkleinern kann und weiteres Verkleinern ab da "blockiert" ist. oder - womit ich mich auch anfreunden könnte - dass ab einer bestimmten Größe Scollbalken am Rand des JFrames erscheinen. Bin für jeden Tipp dankbar.
  25. Hi Leute, ich nutz mal diesen schon bestehenden Thread, da ich mir in Kürze auch einen neuen Rechner zulegen will. Ich hab ein Komplettsystem gefunden, was zum Einen ne recht individuelle Konfiguration der Komponenten erlaubt und zum Andern preis/leistungstechnisch echt gut im Rennen ist. Ich liste mal auf ... (Eins noch - ich such bewusst keine High End Maschine, sondern einfach nur einen brauchbaren, aktuellen und günstigen Allround Rechner) - CPU: Intel Core 2 Duo E7300, 2x2.67Ghz - RAM: 4096MB DDR2 - HDD: 500GB SATA - Laufwerk: 20x DVD-Brenner - Grafik: 512MB NVIDIA 9500GT[PCI-e] - Sound: onboard (würd ich mir dann später nachkaufen) - Gehäuse: Thermaltake Soprano Midi Tower (+ 29,99 €) - Netzteil: 350 Watt, BeQuiet (+ 19,99 €) - Mainboard: IPN73-BA (Chipsatz Nvidia MCP73PV, 1x PCI-E x16, 1x PCI-E x1, 2x PCI, 2x DDR2 533/667/800, 4x SATA2, 7.1 Sound, 1x Gigabit-LAN, 10x USB 2.0) - Külung: Arctic Cooling Alpine 7 pro (+ 7,99 €) ---------------------------------------------- - Komplettpreis: 476,97 € (in dieser Konfiguration. Up- und Downgrades sind möglich, die sich logischerweise auf den Preis auswirken) Wie ist euer Eindruck?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...