myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Hilfe bei Java-Aufgabe (https://mygully.com/showthread.php?t=2758832)

king2rul 22.11.12 16:59

Hilfe bei Java-Aufgabe
 
Hi Leute,

Brauche Hilf bei folgender Aufgabe:

Der Algorithmus
1. Lies den Wert von n als Übergabeparameter beim Programmstart
(args[0]) ein.

2. Setze i auf 3.
3. Solange i < 2n, wiederhole:
a. Erhöhe i um 1.
b. Gib Gib 1.0/(2i+1) aus.

soll auf drei verschiedene Arten implementiert werden: Schreiben Sie jeweils ein Java-
Programm, das diesen Algorithmus als while-, als for- und als do-while-Schleife realisiert.
Sämtliche Programme sollen die gleiche Ausgabe erzeugen!


Leider weiß ich echt nicht wie ich das angehen soll. Und mit den Skripten aus der Uni komm ich auch nicht weiter. Kann mir einer erklären bzw mir die Lösung aufzeigen?

d03jo4n 22.11.12 17:28

Dein Vorgehen ist doch ziemlich genau erklärt.
Kennst du dich mit den drei verschiedenen Schleifentypen aus?
Also, weißt du, wie du die implementierst und wo die Unterschiede liegen?

king2rul 22.11.12 18:18

Also wo die unterschiede liegen weiß ich. Was mich an der Aufgabe stört ist der Punkt 3. wie binde ich das in den Programmstart ein?

d03jo4n 22.11.12 18:25

Also, dein Vorgehen sollte wie folgt sein:
  1. Du guckst, ob Parameter vorhanden sind. Es gilt also args.length>0
  2. Du definierst eine Variable n und setzt sie auf den Wert des Parameters. Die Parameter liegen als String-Array vor. Du kannst folgende Methode benutzen: Integer.parseInt()
  3. Du definierst eine Variable i und setzt sie auf den Wert 3
  4. Du schreibst deine Schleife. Als Abbruchbedingung nimmst du i<2*n
  5. In der Schleife gibst du den Text aus.

Klar?

king2rul 23.11.12 11:12

Erstmal Dankeschön, dass du dir die Zeit genommen hast um mir zu helfen. Deine Aufzählung hilft mir schon sehr, nur krieg ich den Wert des Parameters nicht implementiert. Es erscheint beim Ausführen ein exception-Fehler. Hast du vll noch einen Tipp bzgl der Implementierung? Vll sollte ich noch erwähnen dass ich mit Eclipse arbeite.

Your_Conscience 23.11.12 13:00

Du solltest schon sagen, welche Exception auftritt.
Ein entsprechender Codeausschnitt wäre dazu auch nicht verkehrt.

ProgMaster 23.11.12 13:01

Zeig uns mal bitte Deinen Code.

king2rul 23.11.12 13:37

Danke auch nochmal an euch. Also soweit bin ich gekommen. In diesem fall tritt kein exception Fehler auf.

public class Blatt4Aufg4 {

public static void main(String[] args) {
int n = Integer.parseInt("0");
int i=3;
while(i<2*n)

i++;
System.out.println("Ergebnis = " + 1/(2*i+1));

}

}

ProgMaster 23.11.12 14:17

Benutze eine IDE (Netbeans, Eclipse z.B.).

Wie Dzu jetzt vorzugehen hast hat d03jo4n ja erläutert...

king2rul 23.11.12 15:02

Ich arbeite ja mit eclipse. Mein Problem ist der Übergabeparameter. Diese haben wir in den Vorlesungen nicht behandelt. Ich kriegs partout nicht hin. Vll muss ich einfach die nächste Vorlesung abwarten. Für jeden weiteren Tipp bin ich jedoch dankbar, auch möchte ich drauf hinweisen das ich nie eine fertige Lösung haben wollte.

ProgMaster 23.11.12 15:32

"main(String[] args)"

"args" steht für "Arguments".
Dies sind die beim Aufruf übergebenen Parameter.
In Eclipse musst Du den Aufruf Deiner Main-Klasse entsprechend konfigurieren, da sonst natürlich keine Parameter übergeben werden.

d03jo4n 23.11.12 17:12

Hey king2rul,

du hast - wie ProgMaster andeutete - einen kleinen Fehler gemacht.
Integer.parseInt() erwartet einen String und gibt die darin gespeicherte Zahl zurück.
Dabei kann eine NumberFormatException auftreten, die du abfangen musst.

Deine Zahl steht im Array args (vgl. ProgMasters Post).

Vorgehensweise:
1. Prüfen, ob Parameter vorhanden
2. Konvertieren

Sieht konkret so aus:

Code:

// …
if( args.length < 1 )
{
        System.out.println("Please submit a number");
        return;
}

// == Wenn du hier ankommst, gibt es Parameter == //

int n = 0;

try
{
        n = Integer.parseInt( args[0] );
}
catch( NumberFormatException ex )
{
        System.out.println("Given argument is not a number: "+args[0]);
        return;
}

// Hier geht's weiter mit deiner Schleife
// …

(Habe den Code jetzt nicht getestet, sollte aber funktionieren)

By the way, pack' deinen Code bitte in Code-Blöcke (#-Symbol in der erweiterten Ansicht), um uns das Lesen zu erleichtern :)

king2rul 29.11.12 14:02

Hey d03jo4n,

vielen Dank für deine Hilfe und sry für die späte Antwort, jedoch hat mein Netbook letzte Woche den Geist aufgebeben -.- Jedenfalls hab ich deinen Rat befolgt und es scheint nun alles zu funktionieren :) Echt cool von dir das du mir geholfen hast :)
Hier "mein" Code :)

Code:

public class Blatt4Aufg4 {

public static void main(String[] args) {
        if( args.length < 1 )
        {
                System.out.println("Please submit a number");
                return;
        }

int n;
        try
        {
                n = Integer.parseInt( args[0] );
        }
        catch( NumberFormatException ex )
        {
                System.out.println("Given argument is not a number: "+args[0]);
                return;
        }
        double i = 3;
       
        while(i<2*n)
        {
                i++;
               
               
                System.out.println("Ergebnis = " + 1/(2*i+1) );
        }
        }

}



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.