2017-11-19 13 views
0
private TextView tvOutput; 

int[]feld = new int[30]; 
     feld[0]=0; 
     feld[1]=1; 

     for(int i=2; i<30; i++){ 
      feld[i]=feld[i-2]+feld[i-1]; 

      tvOutput.setText (Integer.toString(feld[i])); 
     } 

Der Code überschreibt meine Var i mit jeder Schleife, so dass das Programm nur die letzte Zahl am Ende zeigt. Aber es soll alle dreißig Zahlen zeigen. Wie kann ich das beheben?Wie man Fibonacci-Zahlen erzeugt?

Antwort

1

Dies liegt daran, dass Sie die text Eigenschaft Ihrer tvOutput bei jeder Iteration Ihrer Schleife überschreiben. Es zeigt die letzte Nummer an, da tvOutput.setText(Integer.toString(feld[29])) das letzte Mal setText heißt. Stattdessen entfernen Sie es aus der Schleife und übergeben Sie das Array in eine Zeichenfolge konvertiert:

int[]feld = new int[30]; 
    feld[0]=0; 
    feld[1]=1; 

    for(int i=2; i<30; i++) { 
     feld[i]=feld[i-2]+feld[i-1]; 
    } 

    tvOutput.setText(Arrays.toString(feld));