Problem bei einem Programm

  • Also ich bin gerade beim Üben und möchte mich ein wenig für EPROG (SS2010) vorbereiten (hab keine Programmier-Vorkenntnisse). Dazu verwende ich das Buch von Reinhard Schiedermeier - Programmieren mit Java, Eine methodische Einführung. Naja, ich bin grad beim ersten Kapitel und habe bei der Aufgabe 1d ein (syntaktisches) Problem (glaube ich). Jedenfalls soll das Programm die Doppelfaktorielle ausgeben (für n=10 wäre das 2*4*6*8*10 = 3840). Wenn ich jetzt in meinem Programm für n = 10 eingebe, dann bekomme ich den Wert, für 9 bekomme ich 945, was auch richtig ist. Sobald ich jedoch für n = Integer.parseInt(args[0]) eingebe, bekomme ich eine Fehlermeldung (siehe screenshot) - im Buch wird das jedoch so verlangt. Was mache ich falsch?

    mein Code:

    Danke schon mal! Wenn ich weitere Fragen habe, werde ich diese hier posten (im gleichen Thread), hoffe das geht OK. greetz@all&hf! misa

  • hm... bei mir gehts:

    edit: ACHSO, du hast den parameter vergessen beim programmaufruf :)

    du musst es natuerlich in dieser art aufrufen:

    Code
    java DFact <dein wert>

    also z.B. eben so:

    Code
    java DFact 10


    ansonsten ist das argumenten array was das programm von der shell bekommt natuerlich leer, also ein "leeres array" und wenn er dann versucht auf ein erstes element zuzugreifen, gibts natuerlich eine exception weil jenes nicht existiert.

  • lewurm, Danke, alter Schwede^^ Dachte wirklich nicht, dass so schnell eine Antwort kommt! Ja, im nachhinein komme ich mir mit der Frage doch bisschen dumm vor, tut mir leid, wenn ich in nächster Zeit öfter so dumme Fragen stellen werde, bin echter Anfänger...

    gn8

  • Hallo nochmal! Die Aufgaben des 2.Kapitels habe alleine lösen können, hat mich aber sehr viel Zeit gekostet! Nun bin ich beim 3.Kapitel und habe die erste Aufgabe gelöst: Median

    Aufgabenstellung: Schreiben Sie ein Programm Median, das drei Zahlen a, b und c von der Kommandozeile einliest und den mittelwert der drei wieder ausgibt. Hier ist nicht der arithmetische Mittelwert gemeint! Denken Sie sich a, b und c angeordnet, dass die Werte von links nach rechts nur steigen oder gleich bleiben. Median gibt die Zahl aus, die dann in der Mitte steht. Beispiel: $ java Median 2 1 2 -> Lösung 2
    Versuchen Sie die Anzahl der Vergleiche auf das Mindestmaß zu reduzieren.

    hier meine Lösung:

    Meint ihr vielleicht, dass es eine leichtere oder bessere Lösung gibt als die meine? Ist das normal, wenn man für die Aufgabe fast 90min braucht als Anfänger? Im Anhang noch meine Testinstanzen. Danke schon mal!

    Greetz@all&hf! misa

    2 Mal editiert, zuletzt von skYeYe (24. Februar 2010 um 23:17) aus folgendem Grund: Testinstanz: alle 3 gleich, zB 3 3 3 -&gt; Liefert jetzt 3

  • Versuchen Sie die Anzahl der Vergleiche auf das Mindestmaß zu reduzieren.


    Probiers mal mit verschachtelten Bedingungen:


    Es sollten insgesamt weniger Vergleichsoperatoren dastehen als bei deiner jetzigen Lösung (schau nur, wie oft du a > b vergleichst!), und in jeder möglichen Anordnung der Eingabewerte sollten maximal drei Vergleiche tatsächlich ausgeführt werden.

    Zitat

    Ist das normal, wenn man für die Aufgabe fast 90min braucht als Anfänger?


    Es ist normal, daß man als Anfänger "ewig" für Sachen braucht, die man mit mehr Erfahrung locker aus dem Ärmel schüttelt. Übung macht den Meister!

    *plantsch*

  • Also du könntest auch einfach mall alle zahlen durch gehen (am besten in ein int-Array am Anfang kopieren). Das heißt merk dir den index der kleinsten Zahl und der größten Zahl + den Häufigkeitswert.

    der haufigkeitswert steigt auf 3 wenn alle gleich waren --> eine der Zahlen ausgeben.
    2 wenn zwei der Zahlen gleichen waren (einen der Indices merken).
    1 den ausgeben der nicht min oder max ist.

    Kürzer ist es aufjedenfall nicht.
    Edit: Lass die Idee weg. Ist für dich vorläufig noch zu schwer, da dass wahrscheinlich noch nicht behandelt wurde.
    Mach einfach nur die Behandlung so wie von Platschkuh vorgeschlagen.

    Für drei Elemente rechnet sich mein Vorschlag einfach nicht, aber es ist ne gut Übung.
    Für de echten Median bei mehr Element müsste man sortieren.

    mfg Schakal

    6 Mal editiert, zuletzt von Schakal (25. Februar 2010 um 11:14)

  • oder du erstellst dir ein integer array mit 3 stellen, schreibst deine zahlen da rein, wendest die methode %29"]sort an und gibst einfach das mittlere element auf der kommandozeile aus.

    damit hast du gar keinen vergleich mehr in deinem programm :D

    edit:

    Patient: "Doctor, doctor, my eye hurts when I poke it with a spoon."
    Doctor: "Don't poke it, then."

    2 Mal editiert, zuletzt von MrMassaker (25. Februar 2010 um 11:57)

  • und wieder mal zeigt sich: wenn man java programmieren will muss man nur wissen wo man suchen muss :)

    Patient: "Doctor, doctor, my eye hurts when I poke it with a spoon."
    Doctor: "Don't poke it, then."

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!