Java débutant appel de fonctions

Fermé
Senkei - 7 oct. 2011 à 21:19
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 8 oct. 2011 à 14:45
Bonjour,

J'ai un exercice en java qui consiste à écrire une classe Conversion qui contient une fonction celsius2Fahrenheit prenant en argument une température en degré Celsius et renvoyant la température en degré Fahrenheit correspondante puis de lui ajouter une fonction ht2Ttc qui à partir d'un prix hors taxe et d'un taux de TVA (fournis en arguments) calcule le prix toutes taxes comprises correspondant. Je pense avoir reussi apour les fonctions mais je ne sais pas comment les appeller dans le main. Voila ce que j'ai fait:

import java.util.Scanner;

class Conversion{
public static double celsius2Farenheit(double c){
double f;
Scanner sc = new Scanner(System.in);

System.out.println("Température en °C");
c = sc.nextDouble();
f = (9 * c) / 5 + 32;
System.out.println("Température en °F");
return f;
}

public static double ht2Ttc(double p, double t){
double r;
Scanner sc = new Scanner(System.in);

System.out.println("Prix hors taxe");
p = sc.nextDouble();
System.out.println("Taux de TVA");
t = sc.nextDouble();
r = p + (p * t) / 100;
System.out.println("Prix toutes taxes comprises:");
return r;

}

public static void main(String[] args){
celsius2Farenheit();
ht2Ttc();
}
}

Quelqu'un peut me corriger et m'aider pour la derniere partie?

Merci

A voir également:

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
7 oct. 2011 à 22:01
Les fonctions doivent faire un travail, là tu mélanges plein de choses...
Ce que je veux dire, c'est que tes fonctions de conversion doivent... convertir !
Toi tes fonctions elles te posent des questions, tu lui réponds, tout ça c'est dans des méthodes de tests à part qu'il faut le mettre (le main par exemple).

Je ne corrige pas ton code, je ne fais que déplacer tes lignes au bon endroit, mais du coup il va t'en manquer, à toi de voir ce qu'il faut rajouter/modifier...

import java.util.Scanner;

public class Conversion
{
    public static double celsius2Farenheit(double c)
    {
        double f;
        f = (9 * c) / 5 + 32;
        return f;
    }

    public static double ht2Ttc(double p, double t)
    {
        double r;
        r = p + (p * t) / 100;
        return r;
    }

    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        
        System.out.println("Température en °C");
        c = sc.nextDouble();
        System.out.println("Température en °F");

        System.out.println("Prix hors taxe");
        p = sc.nextDouble();
        System.out.println("Taux de TVA");
        t = sc.nextDouble();
        System.out.println("Prix toutes taxes comprises:");
    }
}
0
Merci pour ta réponse, j'ai modifié un peu et ça donne ça

import java.util.Scanner;

public class Conversion{
public static double celsius2Farenheit(double c){

double f;
f = (9 * c) / 5 + 32;
return f;
}

public static double ht2Ttc(double p, double t){
double r;
r = p + (p * t) / 100;
return r;
}

public static void main(String[] args){

double c, p, t;
Scanner sc = new Scanner(System.in);

System.out.println("Température en °C");
c = sc.nextDouble();
System.out.println("Température en °F" + celsius2Farenheit(f));
System.out.println("Prix hors taxe");
p = sc.nextDouble();
System.out.println("Taux de TVA");
t = sc.nextDouble();
System.out.println("Prix toutes taxes comprises:"+ ht2Ttc(r));
}
}


Mais a la compilation, il m'indique ça

Conversion.java:24: error: f cannot be resolved
System.out.println("Temprature en F" + celsius2Farenheit(f));
^
Conversion.java:29: error: r cannot be resolved
System.out.println("Prix toutes taxes comprises:"+ ht2Ttc(r));

Qu'est que cela signifie?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
7 oct. 2011 à 23:40
Tu affiches celsius2Farenheit(f) or f n'existe pas (f cannot be resolved).
Idem pour ht2Ttc(r) sauf qu'en plus elle attends deux paramètres et tu lui en donnes qu'un
0
Bon je pense avoir plus ou moins reussi:

import java.util.Scanner;

class Conversion{
public static double celsius2Fahrenheit(double c){
return 9 * c / 5 + 32;
}
public static double ht2Ttc(double p, double t){
return p + (p * t) / 100;
}
public static void main(String[] args){
double c;
Scanner sc = new Scanner(System.in);
System.out.println("Température en °C");
c = sc.nextDouble();
System.out.println("Température en F: " + celsius2Fahrenheit(c));
double p, t;
System.out.println("Prix hors taxe");
p = sc.nextDouble();
System.out.println("Taux de TVA");
t = sc.nextDouble();
System.out.println("Prix toutes taxes comprises:"+ ht2Ttc(p, t));
}
}

Mais il reste encore quelques problèmes:
- Quand je lance le programme et que j'indique une valeur décimale dans c, p, ou t il me met ça:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:857)
at java.util.Scanner.next(Scanner.java:1478)
at java.util.Scanner.nextDouble(Scanner.java:2404)
at Conversion.main(Conversion.java:20)
Par contre ça fonctione pour les valeurs entières et les resultats sont bien en décimaux.

J'aimerai également savoir comment faire pour choisir la fonction a effectuer.

Merci
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
8 oct. 2011 à 14:45
Pour choisir l'une ou l'autre il faut faire un petit menu qui te demande si tu veux l'un ou l'autre (tu réponds en entrant un entier par exemple) et après tu fais un if sur cet entier pour savoir quoi faire

En ce qui concerne les nextDouble, par défaut System.in est configuré sur la syntaxe locale, or en France on utilise des virgules alors que j'imagines que tu as utilisé des points.
Donc soit tu utilises des virgules soit tu te la joues à l'américaine avec sc.useLocale(Locale.US);
0