Afficher la suite de Fibonacci dans un JTable

La suite du mathématicien Fibonacci est la célèbre suite de nombre:
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,...
Elle est utilisée dans de nombreux domaines qui vont des statistiques, à la finance et même à la littérature (Da Vinci Code). Le nombre doré, issu de la division f(n)/f(n-1), est une constante importante dans l'art et l'architecture.

Le but de la class FibonacciSerie est d'illustrer:
arrow la création d'un GUI contenant un JTable
arrow l'affichage d'un Double avec Double.toString et DecimalFormat,
arrow l'ajout d'une ligne dans un JTable.

import java.text.DecimalFormat;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 * Calculer les 30 premiers elements de la suite de Fibonacci
 * @author Fobec 2010
 */
public class FibonacciSerie extends JFrame {

    private JTable jTable = null;
/**
 * Constructeur
 * Creation du GUI
 */
    public FibonacciSerie() {
        super("Suite de Fibonacci");

        JScrollPane jscrollPane = new javax.swing.JScrollPane();
        DefaultTableModel tableModel = new DefaultTableModel(
                new Object[][]{},
                new String[]{
                    "n", "f(n)", "ratio"
                });

        jTable = new JTable(tableModel);
        jscrollPane.setViewportView(jTable);
        getContentPane().add(jscrollPane);
        setSize(600, 550);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
/**
 * Ajouter la suite de Fibonacci dans le tableau
 */
    public void fillTable() {
        this.appendLine(0, "1", "");
        this.appendLine(1, "1", "");

        double prev = 1;
        double prevprev = 1;
        double val = 0;
        Double ratio;
        DecimalFormat fmt = new DecimalFormat();
        fmt.setMinimumFractionDigits(0);
       
        for (int i = 2; i < 30; i++) {
            val = prevprev + prev;
            ratio = val / prev;
            this.appendLine(i, fmt.format(val), Double.toString(ratio));
            prevprev = prev;
            prev = val;
        }
    }

    /**
     * Ajouter une ligne au JTable
     * @param n indice
     * @param val f(n)
     * @param ratio f(n)/f(n-1)
     */
    private void appendLine(int n, String val, String ratio) {
        DefaultTableModel tablemodel = (DefaultTableModel) jTable.getModel();
        Object[] objects = new Object[3];
        objects[0] = n;
        objects[1] = val;
        objects[2] = ratio;

        tablemodel.addRow(objects);
    }

    /**
     * Exemple pour lancer la classe
     * @param args
     */
    public static void main(String[] args) {
        FibonacciSerie jFrame = new FibonacciSerie();
        jFrame.fillTable();
    }
}

Voici la suite des 30 premiers nombres de la suite de Fibonacci

fibonacci_serie

Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour22/12/2010
VisualisationVu 1143 fois
PublicInternaute
CategorieJAVA - Class - Divers
Auteur de l'article
fobec fobec
connecté le 09/05/2012
36 ans - France Nord-Est
44 articles dans la section
Contacter l'auteur
Partager l'article