Beiträge von a9bejo

    Zitat von SuperMario

    Hallo ihr!
    Ich tue mich schwer mit den Mengenoperationen in Java!
    Ich soll zu jeder der folgenden Methoden eine Datenstruktur nennen, bei der diese Methode besonders effizient implementiert werden kann und das dann auch noch meine Wahl begründen.
    Ich wäre für hilfe sehr dankbar!

    Lies dir mal diese Übersicht über die wichtigsten Datenstrukturen durch.

    im package java.util findest Du zu den meisten die dazugehörigen Implementationen in Java.

    Wenn Du dann noch weitere Fragen haben solltest, einfach nochmal nachfragen.

    Vielleicht sind die ja dann auch etwas detaillerter: Einfach nur Deine Hausaufgaben posten hat ja bis jetzt auch nicht funktioniert

    liebe grüsse, Benjamin Ferrari

    Zitat von thongsong

    Ist hier vielleicht unpassend, aber ich habe da mal trotzdem eine Frage. Wo bekomme ich eine Kurzreferenz zu Pseudocode. Oder kann mir jemand eine didaktisch wertvolle Literatur zu diesem Thema vorschlagen?:confused:

    Es gibt meines wissens nach keine spezifizierung, wie pseudocode auszusehen hat. Wenn es so etwas geben würde, währe das 'pseudo' ja nicht mehr zutreffend.

    Die einizge Vorraussetzung ist, das der leser versteht was du meinst.

    Also z.b:

    Code
    von i=1 bis 10:
      //gib i aus
    Code
    i=1 ... 10
     print i
    Code
    for (int i=1; i<=10;i++){
     //spuck aus das i
    }


    ist alles gültiger pseudocode

    ich denke was du suchst ist JTabbedPane.setSelectedIndex(int)

    Code
    char c = 'c';
    
            java.util.Stack stack = new java.util.Stack();
            stack.push(new Character(c));
    
            char c2 = ((Character)stack.pop()).charValue();


    und mit Java >= 1.5 gehts auch so:

    Code
    char c = 'c';
    
            java.util.Stack<Character> stack = new java.util.Stack<Character>();
            stack.push(c);
    
            char c2 = stack.pop();

    Ich habe gute Erfahrungen mit 'Programming C# ', von Jesse Liberty gemacht. Wird von O'Reilly publiziert und sowohl die Sprache C#, als auch die .NET Platform wird sehr gut erklährt.

    Der Author verlangt zwar gleich zu Beginn zumindest Grundkenntnisse in einer höheren Programmiersprache. Beim Lesen hatte ich aber eher den Eindruck, das es auch ohne solche gegangen währe. Ich habe die ersten Kapitel nur überflogen, aber es wurden dort die Grundlagen ausführlich beschrieben.
    Ich bin sicher, das man auch als Programmieranfänger gut zurecht kommt.

    Wenn es Dir doch zu schwer ist, liest Du einfach die ersten Kapitel aus einem Online Tutorial (wie das, dass winf.wol gepostetet hat), und versuchst es dann noch einmal.


    @c# in a nutshell: hatte ich mir auch gekauft, ist aber meiner Meinung nach eines der schlechteren Werke aus der '...in a Nutshell' - Reihe:

    Eine API Referenz findet man bei MSDN viel ausführlicher (und vor allem aktueller), und wenn ich von einer anderen Sprache/Platform umsteige, bin ich mit der C# Language Spezification erstmal besstens bedient.
    Ich hab das Buch bis jetzt so gut wie nie verwendet.

    Es gibt übrigens auch 'C# for Java Programmers', das fand ich auch nicht schlecht.

    so hatten wir es ja auch geschrieben: man mounted den order(bzw. jarfile) mit dem source, nicht das package selbst.

    Zitat von CommanderMorane

    hi,
    muss man bei netbeans irgendwie noch etwas für packages konfigurieren? ich habe meine packete und klassen meiner meinung nach richtig definiert aber er sagt mir dauernd das er ne klasse ned findet obwohl sie da ist?
    thx schonmal
    mfg
    rene

    Ist schon eine weile her, aber so weit ich mich erinnere muss man lediglich den ordner oder ein .jar mit den entsprechenden packages/klassen mounten und das wars dann.

    Hab aber auch schon ein Jahr lang nicht mehr reingeschaut und laut IX hat sich seitdem viel getan...

    Oft dreht sich eine Frage um ein konkretes Programm(fragment), das entweder nicht so reagiert wie gewünscht, oder gar nicht erst compiliert.

    Leider wird der entsprechende Code oft einfach mit copy&paste in den Beitrag gepostet. Solche Programme sind aber für andere Forenbesucher oft nur sehr umständlich zu verstehen und zu testen.
    Nur wenige haben Zeit und Lust, sich mit solchen Problemen lange und gründlich auseinanderzusetzen.

    Um möglichst viele, schnelle und gute Ratschläge zu erhalten, sollte man seinen Code vor dem Posten wie folgt optimieren. Besser noch ist es, ein eigenständiges Beispielprogramm zu schreiben, das sich ohne weiteres kompilieren und ausführen lässt und das Problem demonstriert.

    Wem das zu umständlich oder zeitaufwendig ist, der hat sich offensichtlich selbst noch nicht lange genug mit dem Problem beschäftigt und sollte die Arbeit nicht auf andere übertragen.

    • Das Problem sollte detailliert beschrieben werden.

      [INDENT]- Was erwarte ich als Ausgabe?
      - Welche Ausgabe erhalte ich tatsächlich?
      - Wenn es eine Fehlerausgabe gibt, bitte immer die gesamte Fehlermeldung posten.[/INDENT]

    • Alles entfernen, was nicht zum Problem gehört.

      [INDENT]Alle Methoden/Funktionen/Variablen/Klassen/...,die das Problem offensichtlich nicht verursachen, gehören nicht in den Code. Nichtrelevante Methoden können dabei entweder gelöscht, oder durch Dummy-Methoden ersetzt werden.

      Im Zweifelsfall entfernt/ersetzt man eine Methode erst und prüft so, ob sie für den Schaden (mit)verantwortlich ist.

      Oft ist es am einfachsten, aus dem fehlerhaften Programmfragment ein eigenständiges Beispielprogramm zu machen und das dann zu posten. Oft findet man den Fehler dabei ganz von selbst. [/INDENT]

    • Man sollte den Code testen können.

      [INDENT]Am besten analysiert man ein Programm, indem man es laufen lässt. Der gepostete Code sollte ohne viel Arbeit mit copy&paste in einen Editor/IDE geladen und getested werden können.
      Bitte niemals Code direkt in den Beitrag schreiben, sondern erst testen und dann in den Beitrag kopieren! Nichts ist ärgerlicher, als wenn man Zeit an Programmcode verschwendet, weil sich irgendwo ein Flüchtigkeitsfehler eingeschlichen hat.

      Manchmal ist das Problem aber, das sich der Code eben nicht compilieren und ausführen lässt.In diesem Fall sollte man zumindest die genaue Fehlermeldung zum Artikel hinzufügen.

      Auf jeden Fall aber sollten externe Ressourcen, wie zum Beispiel eine Datei oder eine Datenbankverbindung, möglichst durch dummy-Funktionen ersetzt werden.[/INDENT]

    lg, bejo
    ---------------------
    kafkaesk

    Zitat von @xid

    also ich beschreib mal mein problem:
    wenn ich die methode Temperatur(anz,von) starte und dann durchlaufen lasse mit anz = 50 von = -444 gibt es mir 0 aus. wenn ich es aber debuge, dann steht im temp[i] immer ein gültiger wert drinnen :(

    hmm, die angabe sieht mir nach spengergasse, Behringer aus ?

    zu deiner frage:

    in der funktion Temperatur(int,int) erhöhst du _erst_ den index des arrays, und gibst _dann_ den wert des arrays an dieser stelle aus. Das ist also der wert _nach_ dem zuletzt beschriebenen. Und das ist 0, da die elemente eines arrays immer mit dem default wert initialisiert werden, und das ist bei einem integer 0. wenn du i++ hinter den print befehl setzt, bekommst du die richtigen werte.

    ansonsten ist dein code wirklich unleserlich, redundant und alles andere als modular. Für einen Einsteiger nicht ungewöhnlich, aber ich würde Dir empfehlen, viel programmcode von anderen Programmierern zu studieren (aus büchern oder open source programmen oder von kollegen), weil sich das allein durch selbst programmieren nicht bessert.

    Zur Verwirrung führen zum Beispiel schon die Bezeichnungen deiner Klasse und Methoden:

    Deine Klasse heisst 'Temperatur', aber eine Temperatur besitzt sicher keine Liste von Temperaturwerten. Und Du hast eine Methode, die _auch_ Temperatur heisst. Nicht nur das es verwirrend ist, weil jeder erstmal denkt das ist ein Konstruktor. Eine Methode sollte auch immer, wie der Name schon andeutet, die darin enthaltene action beschreiben. Also z.B 'addRandomTemparatureValues' oder sowas.
    Methoden beginnen laut Convention übrigens mit einem kleinbuchstaben (zumindest in Java).


    Ich habe deinen code nicht ganz gelesen und bin mir nicht sicher, was da eigentlich machen soll, trozdem hier eine Temperaturliste mit einer Methode, die sie mit zufallswerten füllt.

    vielleicht hilft dir das ja weiter:

    falls Du noch hilfe brauchst, hier ein paar tips (habe eclipse 3.0 beta) :

    Zitat von JohnFoo

    Wo finde ich die Variable, die im Kommentar nach @author eingefügt wird? Möchte sie ändern.


    window->preferences->java->code generation->code and comments

    und :

    window->preferences->java->editor->templates


    Zitat von JohnFoo


    Ich möchte die Code-Formatierung so umstellen, dass jede Membervariable ein Präfix erhält (_membervariable). Wo kann ich das umstellen?


    window->preferences->java->code generation->names


    Zitat von JohnFoo


    Kann man wie in Visual Studio Membervariablen und Methoden hinzufügen? Wenn ja, wie?

    Ich weiss nicht, wie man das im VS macht.
    Klingt aber nicht nach einem nützlichen feature...

    Mann kann kleine-mittlere webprojekte sicher fein mit PHP oder Perl machen.
    tausende programmierer machen das und fahren gut damit.

    Ich würde dir (und jedem andern) aber empfehlen doch auch andere scriptsprachen in die überlegung einzubeziehen. Die am meisten verwendeten lösungen sind nicht unbedingt die besten.

    ich bin kein perl experte, aber nach dem tutorial das ich gelsenen habe und dem was ich so höre, ist es einwahrer Wartungsalbtraum. Und das lese ich sogar in beiträgen wo die sprache ansonsten beworben wird. Wenn ich mich irre, lasse ich mich da gerne eines besseren belehren.

    für jedes sprachkonstrukt gibt es offenbar mehrere varianten, was die lesbarkeit von perlcode oft völlig ruiniert.

    Und mit PHP habe/musste ich jahrelang arbeiten: die funktionen sind völlig uneinheitlich benannt (zum beispiel 'str_replace', 'substr_replace', 'parse_str') , es gibt nur eine wsehr halbherzige implementierung von objektorientierten sprachelementen (geschweige denn das die api darauf aufbaut) und eine trennung in logic und view ist mühsam und gelingt auch meistens nur halbherzig. Soweit ich weiss wurde PHP damals entwickelt um eine saubere alternative zu perl bereitzustellen. Aber wer seine ziele so niedrig setzt... ;)

    Wenn man sich ein gästebuch schreibt ist das vielleicht noch egal (dafür kann man dann aber auch _irgentwas_ nehmen), aber sobald der code etwas wächst, stellt einem PHP plötzlich lauter steine in den weg.

    Mein favorit ist hier eindeutig python. Python wird zwar nicht so häufig benutzt wie Perl oder PHP, gerade in den letzten Jahren hat es hat es sich aber sehr stark ausgebreitet. das framework von google läuft zum beispiel mit python, genauso wie die map-services von yahoo
    mit python kann man auch sehr schnell und unkompliziert entwickeln, aber wenn das projekt dann doch anwächst skaliert es meiner Meinung nach _viel_ besser.

    Ein grund, warum manche vor webprogrammierung in python abschrecken ist weil sie man nach einer recherche oft ersteinmal auf zope und dann auf webware stossen.
    Dass sind nämlich 2 webframeworks, die zwar sehr mächtig sind, aber eher als application server ala websphere/weblogic konzipiert sind (sozusagen als kleiner bruder zu j2ee). Für ein kleines projekt wirken die dann als würde man mit kanonen auf spatzen schiessen.

    ich verwende seit einiger zeit python mit SPYCE und dass will ich hier weiterempfehlen:

    Mit spyce kann man pythoncode in html einbetten,die installation, genau wie man es von PHP gewöhnt ist. Es sind aber auch taglibraries a la JSP möglich und mit den sog. 'Spyce lambda's' kann man die view ganz schnell und doch sauber von der logic trennen. Ansonsten hatt man natürlich die ganze vielfalt von python APIs zur verfügung...
    Und das sich python nicht nur für webentwicklung eigenet ist wahrscheinlich bekannt ;)

    PS: die IX hatte kürzlich einen netten artikel über spyce, ich glaube teilweise steht der auch online.

    Zitat von marX

    Also versteh das jetzt bitte nicht falsch, aber dieser code sieht nicht danach aus, als ob du java programmieren könntest!!


    Nein, Es sieht so aus, als würde er es gerade lernen.
    Er will uns seinen code nicht verkaufen, er stellt fragen darüber.

    Zitat von marX


    als erstes brauchst du mal einen konstruktor für die klassen!


    jeder der beiden klassen in seinem code _hat_ bereits einen konstruktor.
    wenn er nur einen leeren kontruktor ohne parameter benötigt, wieso sollte er ihn dann extra anschreiben?

    Zitat von marX


    2. brauchst du keine "main" routine zu erstellen....


    Wenn er Sum.class als Applikation starten will (das ist hier offensichtlich der fall), dann braucht er auch die main-methode.

    Zitat von marX


    3. würde ich schon aus gründen der übersichtlichkeit jede klasse in eine eigene datei stecken....


    das tut er doch!


    Sicka macht offensichtlich gerade seine ersten Schritte als Programmierer. Wenn er gerade lernt, wie er java-source compiliert, muss er noch nichts über OOP design wissen ( Sicka: 'LeseZahl' ist keine gültige bezeichnung für eine klasse).

    Zitat von Sicka

    Jetzt funktioniert es endlich.

    Ich habe die ganze Zeit die Klassen getrennt kompiliert, d.h. zuerst:
    javac LeseZahl.java

    und dann:
    javac Sum.java

    Das funktioniert nicht. Wenn ich in einem Befehl beide Klassen schreibe:
    javac LeseZahl.java Sum.java
    funktioniert es. Das war mein Fehler.

    das ist seltsam! ob getrennt oder gemeinsam compiliert macht eigentlich keinen unterschied! Hauptsache bei 'javac Sum.java' findet der Compiler die 'LeseZahl.class' im classpath.
    :confused:

    Ich denke, dass Verkaufen von Software, für die man mysql zusätzlich installieren muss, ist hier der entscheidende Punkt:

    Wenn ich meine applikation nämlich so aufbaue, dass sie ausser mit mysql noch mit irgendeinem anderen (kommerziellen) DBMS läuft, muss ich meinen eigenen code _nicht_ mehr unter die GPL stellen. Also offiziell auch immer brav für Oracle 10g entwickeln ;)

    Oder übersehe ich da jetzt etwas?

    JohnFoo:
    Ich fand den Artikel(IX) auch sehr, gut, die Rechte und Pflichten bei der Lizensierung waren da aber (fast) kein Thema.

    am code liegt das problem sicher nicht.Der ist (von der syntax her betrachtet) völlig korrekt.

    - compilierst du Sum.java auch sicher _nach_ LeseZahl.java?
    - hast du nicht vielleicht noch irgendwo eine 'package' anweisung in deiner klasse stehen?
    - Hast du vielleicht irgendwo bei den datei- oder klassennamen gross/kleinbuchstaben verwechselt?

    am besten nochmal Schritt für Schritt:

    Datei: 'Sum.java' :

    Datei: 'LeseZahl.java' :

    in der shell:

    Code
    E:\documents\labs\workspace\test\src>javac LeseZahl.java Sum.java
    
    
    E:\documents\labs\workspace\test\src>java Sum
    Zahl eingeben
    2
    2
    Zitat von Sicka

    Ich möchte ein Javaprogramm mit 2 Klassen schreiben. Dabei muss ichjede Klasse als eigene Datei speichern, Dateiname = Klassenname, oder?


    Das ist nicht ganz richtig:

    Es darf nur eine einzige Klasse mit dem Schlüsselwort 'public' pro datei vorhanden sein, und die muss dann genauso heissen wie die datei.

    Du darfst aber beliebig viele weitere Klassen definieren, die nicht public sind:

    Zitat von hal

    Nennt sich "Java Bytecode", und es gibt keine physikalischen Prozessoren, die das direkt ausführen können, ich glaub wegen der Komplexität (es waren mal welche in Planung, das wurde aber alles wieder verworfen).

    Soweit ich weiss werden die meisten neueren handies mit java-optimierten prozessoren ausgeliefert.

    Es fragt sich natürlich, was man hier wirklich unter 'optimiert' versteht, aber angeblich wurden 2003 mehr java optimierte prozessoren verkauft als intel modelle.

    ich hab die quelle leider verschlampt (ich glaub das war ein slashdot artikel), ich suche aber weiter.

    vielleicht bin ich jetzt auf dem holzweg, aber ich glaube ihr habt euch misverstanden, weil ihr dem begriff 'memory leak' eine unterschiedliche bedeutung gebt:

    marX meint damit, das ein objekt im speicher verbleibt, ohne das eine referenz auf das objekt existiert (klassisches c++ problem, wenn man nicht gescheit aufräumt). Das Objekt bleibt dann bis zum Programmende im Speicher, es entsteht ein Leck => Memory Leak.

    In Java kann das aber nicht passieren, es sei denn durch einen riesen bug im gc.

    Mad_Max spricht glaub ich von Memory Leaks im Sinne von unnötig hohem Speicherverbrauch, der durch designfehler irgendwo im programmcode entstanden ist. Darum will er auch Infos zu den im originalposting erwähnten tools, um die betreffenden Stellen zu finden und den code zu optimieren.

    habe ich damit recht oder hab _ich_ jetzt am ziel vorbeigeschossen? ;)

    die tools kenne ich übrigens alle nicht (JProbe vom Namen her), wenn du(Mad_Max) die noch testest wäre es nett, wenn die resultate posten könntest.


    PS: Ich versuche schon seit wochen, bei solchen postings nur noch in kleinbuchstaben zu schreiben, das ist viel schwerer als man glaubt :)