TP2

JO_NFP121

NFP 121 - TP2

Conversion Fahrenheit - Celsius




EnoncéEnoncé

Question 1 : canversion Fahrenheit - Celsius

Après avoir compléter les 2 méthodes de la classe, j'obtient le résultat demandé.


la méthode float fahrenheitEnCelsius(int f) :


/**
     * la méthode de conversion.
     * 
     * @param f
     *            la valeur en degré Fahrenheit
     * @return la conversion en degré Celsius
     */
    public static float fahrenheitEnCelsius(int f) {
        float e = (float)5/9*(f-32);
        return e;
    }   


La méthode main :


/**
     * Application convertissant un Fahrenheit en Celsius.
     *
     * 
     * @param args
     *            ...
     */
    public static void main(String[] args) {
        // pour tous les paramètres de la ligne de commande
        int fahrenheit = 0;
        float celsius = 0;
        for(int i = 0; i<args.length; i++){
            fahrenheit = java.lang.Integer.parseInt(args[i]);
            celsius = fahrenheitEnCelsius(fahrenheit);
            System.out.println(fahrenheit + "\u00B0F -> " +((int)(celsius*10)/10.0) + "\u00B0C"); // ligne,
        }                                                                  // format
                                                                                // imposés
    }




Question 1.1 : classe de test

j'ai agrémenté la classe de test avec d'autres assertions :


La méthode test_fahrenheitEnCelsius :


/**Fonction de test.
	 * Teste différentes valeurs afin de vérifier si la conversion fonctionne.
	 */
	public void test_fahrenheitEnCelsius() {
		assertEquals("    0 °F -> -17.7 °C ? ", -17.7, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(0), 0.1);
		assertEquals("  100 °F -> 37.7 °C ? ", 37.7, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(100), 0.1);
		assertEquals(" 2000 °F -> 1093.3 °C ?", 1093.3, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(2000), 0.1);
		assertEquals("   54 °F -> 12.2 °C ?", 12.2, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(54), 0.1);
		assertEquals("   37 °F -> 2.7 °C ?", 2.7, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(37), 0.1);
		assertEquals("   500 °F -> 260.0°C ?", 260.0, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(500), 0.1);
		assertEquals("   356 °F -> 180.0 °C ?", 180.0, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(356), 0.1);
		assertTrue("0°F < 100°F",question1.FahrenheitCelsius.fahrenheitEnCelsius(0)< 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(100));
	}




Question 2 : Exception "runtime"

En reprenant la conversion de la question 1, j'ai ajouté la gestion de l'exception "NumberFormatException".
De plus , en rajoutant le try catch dans la boucle for, cela nous permet, comme vue en ED de laisser passer l'exception,
tout en continuant le traitement de conversion des nombres qui suivent l'erreur passée en paramètre.


La méthode main :


 public static void main(String[] args){
       
        int fahrenheit = 0;
        float celsius = 0;
        for(int i = 0; i<args.length; i++){
            try{
                    fahrenheit = java.lang.Integer.parseInt(args[i]);
                    celsius = fahrenheitEnCelsius(fahrenheit);
                    System.out.println(fahrenheit + "\u00B0F -> " +((int)(celsius*10)/10.0) + "\u00B0C");
            }catch(NumberFormatException nfe){
                   System.out.println("error : " + nfe.getMessage());
              }
       
        }
       
     }


La méthode FahrenheitCelsiusTest :


Voilà le rajout pour tester NumberFormatException :

/**Test fahrenheitEnCelsius.
     * 
     * plusieurs tests de bon fonctionnement.
     */
    public void test_fahrenheitEnCelsius() {
        assertEquals("    0 °F -> -17.7 °C ? ", -17.7, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(0), 0.1);
        assertEquals("  100 °F -> 37.7 °C ? ", 37.7, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(100), 0.1);
        assertEquals(" 2000 °F -> 1093.3 °C ?", 1093.3, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(2000), 0.1);
        assertEquals("   54 °F -> 12.2 °C ?", 12.2, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(54), 0.1);
        assertEquals("   37 °F -> 2.7 °C ?", 2.7, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(37), 0.1);
        assertEquals("   500 °F -> 260.0°C ?", 260.0, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(500), 0.1);
        assertEquals("   356 °F -> 180.0 °C ?", 180.0, 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(356), 0.1);
        assertTrue("0°F < 100°F",question1.FahrenheitCelsius.fahrenheitEnCelsius(0)< 
			question1.FahrenheitCelsius.fahrenheitEnCelsius(100));
        
    }




Question 3 :

L'applette complétée


Applette complétée en reprenant ce qui a été fait précédemment.


Voici par exemple une photo avec l'applette dont les paramètres background ont changé ainsi que le résultat donné dans l'énoncé

Q3 2


Cette applette prend aussi en compte le zéro absolu.




Conclusion, biliographie et remarques :

Petites frayeurs lors des tests sur Jnews, notamment sur la question 2 où j'avais mis 2 System.out.println
ce qui provoquait une erreur lors du submit. Sinon dans l'ensemble cela c'est plutôt bien passé.
De plus j'ai essayé de faire un effort sur la mise en page du rapport.

Commentaires

Ajouter un commentaire

 
×