POW funktioniert nicht mit Variable in einer Schleife



  • Hi! Ich versuch grad was hinzubekommen aber die Ausgabe zeigt dauernd "0"...

    double[] ar=new double[10]; 
    double t=0; 
    for (int x=1;x<10;x )
    { 
    t =ar[x]=java.lang.Math.pow((double)(5/6),(double)(x*2-1));
    System.out.printf("s:%5.5f\n",ar[x]); 
    } 
    System.out.printf("%5.5f\n",t);
    

    ar sollte die einzelnen werte speichern... und t die summe der werte ABER das ganze funktioniert nur wenn ich direkt im Code statt x eine zahl einsetze aber mit der schleife und der variable geht das nicht... Finde den Fehler aber nicht...
    Bin schon müde und wahrscheinlich ists eh ein dämlicher Fehler...
    Kann mir da einer helfen?



  • Lieber schlafen gehen:

    for (int x=1;x<10; x )

    Sollte wohl
    for (int x=1;x<10;x++ ) heisen

    t soll doch die Summe speichern?
    t += ar[x]=java.lang.Math.pow((double)(5/6),(double)(x*2-1));

    Wieso schreibst du java.lang.Math.pow? Einfach ein import java.lang;
    Ausserdem brauchst du den cast nach double nicht. Schreib einfach:
    5.0/6.0 und x*2.0 - 1.0



  • Das mit dem + war nur ein Fehler beim Kopieren ins Forum (hab den Thread mehrmals aufmachen müssen, weil die Meldung kam (Forum existiert nicht)- kA wieso)
    Dabei hat er den Text mit "\" und "+" bzw "-" vollgepackt...wie gesagt keine ahnung wieso aber das + ist überall vorhanden
    Hab die casts und die extra java.lang.Math reingeschrieben weil ich dachte es liegt vlt daran...

    EDIT: Habs gefunden: er brauchte überall das ".0" ... dachte es würde bei ganzzahlen auch so funktionieren...ne egal...ich geh mal pennen...gibts ja nicht 🙄



  • So geht es:

    t += ar[x] = Math.pow(5d/6d, (x*2-1));
    

    Bei "5/6" kommt anscheinend sonst Null raus, weil er mit int rechnet. "(double) 5/6" sollte auch gehen.



  • import java.lang.*; muss nicht gemacht werden, weil java.lang automatisch schon "importiert" wird.

    5/6 gibt auf jedenfall Null, weil die Zahlen als Ganzzahl interpretiert werden. Entweder als double (5. oder 5d) oder float (5f) hinschreiben, dann gehts.


Anmelden zum Antworten