[Java] Problem bei einer Methode

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Laura, 13. Dezember 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. Dezember 2008
    Problem bei einer Methode

    Hey,
    ich will eine Methode machen, in der man eine zahl zwischen 2 frei wählbaren Werten eingibt und dann die Wurzel berechnet wird. So weit so gut das funktioniert auch aber jetzt will ich noch eine Schleife einbauen, die nach der berechnung fragt, ob man von noch einer Zahl die Wurzel ziehen will, aber leider gibts da ne fehlermeldung, weil der mit dem return probleme hat
    hier mal mein code:
    Code:
    [COLOR="DeepSkyBlue"]private static double nocheineBerechnung(int Wert1, int Wert2)[/COLOR]//hier sagt er mir am Rand: Diese Methode muss ein Ergebnis des Typs double zurückgeben
     { //Anfang der Methode eingabeGanzzahl
     double zahl1;
     [COLOR="Red"]char nochEineBerechnung;[/COLOR]
     
     [COLOR="Red"]nochEineBerechnung='j'; // Vorbelegen wegen while[/COLOR]
     
     [COLOR="Red"]while(nochEineBerechnung=='j')
     {// Anfang while nochEineBerechnung[/COLOR]
     
     System.out.println("Bitte geben Sie die erste Zahl ein (zwischen: " + Wert1 + " und " + Wert2 + "):");
     zahl1= Tastatur.leseKommazahl();
     
     while (zahl1<Wert1 || zahl1>Wert2) 
     { // Anfang while Eingabe zahl1
     System.out.println("Falsche Eingabe!! Bitte geben Sie eine Zahl ein (zwischen: " + Wert1 + " und " + Wert2 + "):");
     zahl1=Tastatur.leseKommazahl();
     } // end while Eingabe zahl1
     
     double ergQuadratwurzelAusZahl1=Math.sqrt(zahl1);
     System.out.println("Gewählte Zahl war: " + zahl1);
     return ergQuadratwurzelAusZahl1;
     }// end while nochEineBerechnung
    [COLOR="Red"]// Noch eine Berechnung?
     
     System.out.println("Wollen Sie noch Eine Berechnung durchführen? (Ja=j; Nein=n)"); 
     nochEineBerechnung=Tastatur.leseZeichen();
     
     //}// end while nochEineBerechnung
     
     if(nochEineBerechnung!='j' || nochEineBerechnung!='n')
     {//anfang if nochEineBerechnung
     System.out.println("Falsche Eingabe!! Geben Sie ein: (Ja=j; Nein=n) ");
     }//end if nochEineBerechnung[/COLOR]
     
     } //end der Methode eingabeGanzzahl
    Das rote ist für die weiter Berechnung verantwortlich
     
  2. 13. Dezember 2008
    AW: Problem bei einer Methode

    Die Funktion wird verlassen, sobald ein return kommt.
     
  3. 13. Dezember 2008
    AW: Problem bei einer Methode

    Also

    Als erstes hab ich mal ne Frage....kennst du die do-while Schleife... ?

    Das Problem is das mit return die Methode quasi abgebrochen wird.
    Weiteres problem wäre das du ja nur einen double wert zurückgeben sollst und nicht mehrere...
    die Lösung wäre zum Beispiel dass du ein Array mit double Werten zurück gibst.
    Oder was geläufiger ist...einfach eine Schleife um die Methode laufen lassen..also nich in der Methode selber sonder drumherum z.B. in der Mainklasse...

    Verstehst du was ich meine?
     
  4. 13. Dezember 2008
    AW: Problem bei einer Methode

    nicht so richtig^^ und was meinsten mit der do-while schleife, ja die kenn ich wieso??
    und das mit der schleife in der main wüsste ich dass es auch so geht aber eig wollt ichs in der methode haben
     
  5. 14. Dezember 2008
    AW: Problem bei einer Methode

    Wenn du das alles in der Methode lösen willst dann musst du als erstes den Rückgabewert ändern..
    ich geh ja mal davon aus das du nicht nur einen Wert sondern alle Werte zurück geben willst, oder?
    Ich würde dir raten kein double sondern einen double[] zurückzugeben
    Nachteil der Lösung is halt das du die Methoden die auf diese Methode zugreifen anpassen musst....Deswegen wäre ne Schleife ausserhalb ..in quasi der Menüfuhrung leichter
    also mein Lösung mit Array als Rückgabetyp:

    private static double nocheineBerechnung(int Wert1, int Wert2)

    private static double[] nocheineBerechnung(int Wert1, int Wert2)

    //Ganz am Anfang erstellst du jetzt ein Array und einen Zähler..

    double[] ergQuadratwurzel = new double[10];
    int i = 0;

    //da speicherst du dann alle Ergebnisse drinne ,ausserdem muss du dich für eine größe des Arrays entscheiden , das limietiert dann quasi die Rechenanzahl die du durchführen kannst,der Zähler hilft der Methode das keine Position im Array zweimal belegt wird...

    Aus deiner Zeile ...
    double ergQuadratwurzelAusZahl1=Math.sqrt(zahl1);
    wird dann folgende....

    double ergQuadratwurzel=Math.sqrt(zahl1);
    i++;

    das
    "return double[] ergQuadratwurzel" musst du denn erst ganz zum Schluss ausführen lassen wenn der Benutzter sagt das er nicht mehr weiterrechnen will....Also auf die Frage....Wollen Sie weiterrechnen... Antwort : N
    dann
    return double[] ergQuadratwurzel ;....

    Bei Fragen einfach fragen
     
  6. 14. Dezember 2008
    AW: Problem bei einer Methode



    okay hab das jetzt mal so gemacht:
    Code:
    private static double[] nocheineBerechnung(double Wert1, double Wert2) 
     { //Anfang der Methode eingabeGanzzahl
     double zahl1;
     char nochEineBerechnung;
     double[] ergQuadratwurzel = new double[10]; 
     int i = 0; 
     
     nochEineBerechnung='j'; // Vorbelegen wegen while
     
     while(nochEineBerechnung=='j')
     {// Anfang while nochEineBerechnung
     
     System.out.println("Bitte geben Sie die erste Zahl ein (zwischen: " + Wert1 + " und " + Wert2 + "):");
     zahl1= Tastatur.leseKommazahl();
     
     while (zahl1<Wert1 || zahl1>Wert2) 
     { // Anfang while Eingabe zahl1
     System.out.println("Falsche Eingabe!! Bitte geben Sie eine Zahl ein (zwischen: " + Wert1 + " und " + Wert2 + "):");
     zahl1=Tastatur.leseKommazahl();
     } // end while Eingabe zahl1
     
     [COLOR="Red"]double[i] ergQuadratwurzelAusZahl1=Math.sqrt(zahl1);[/COLOR]
     i++;
     System.out.println("Gewählte Zahl war: " + zahl1);
     //return double[] ergQuadratwurzelAusZahl1;
     }// end while nochEineBerechnung
    // Noch eine Berechnung?
     
     System.out.println("Wollen Sie noch Eine Berechnung durchführen? (Ja=j; Nein=n)"); 
     nochEineBerechnung=Tastatur.leseZeichen();
     
     //}// end while nochEineBerechnung
     [COLOR="red"]return double[] ergQuadratwurzelAusZahl1;[/COLOR] if(nochEineBerechnung!='j' || nochEineBerechnung!='n')
     {//anfang if nochEineBerechnung
     System.out.println("Falsche Eingabe!! Geben Sie ein: (Ja=j; Nein=n) ");
     }//end if nochEineBerechnung
     
     } //end der Methode eingabeGanzzahl
    Beim ersten roten sagt er: Typabweichung konvertierung von double auf double[] nicht möglich
    beim zweiten sagt er: ergQuadratwurzelAusZahl1 kann nicht aufgelöst werden
     
  7. 14. Dezember 2008
    AW: Problem bei einer Methode

    Jetzt seh ichs..war noch bissel müde ... Sorry.
    zum 1.

    double ergQuadratwurzelAusZahl1=Math.sqrt(zahl1);
    ersetzen mit:
    ergQuadratwurzelAusZahl1=Math.sqrt(zahl1);


    zum 2.
    return double[] ergQuadratwurzelAusZahl1;
    ersetzten mit:
    return ergQuadratwurzelAusZahl1;

    Und das return solltest du wirklich als allerletztes platzieren...danach darfst du nich mehr rechnen....
    sobald das return kommt wird die Methode abgebrochen....

    my ICQ:292695127
     
  8. 14. Dezember 2008
    AW: Problem bei einer Methode

    okay VIKI hat mir per ICQ geholfen also

    ~CLOSED~
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.