Besoin d'aide pour mon programme

Résolu/Fermé
Sarkox - Modifié par KX le 20/11/2015 à 20:50
Sarkox Messages postés 2 Date d'inscription samedi 21 novembre 2015 Statut Membre Dernière intervention 28 novembre 2015 - 21 nov. 2015 à 18:53
Bonjour,
j'ai commencé depuis peu de temps à programmer,
j'ai écrit un programme (banale) pour trouver en % ton résultat de test ou |d'examen,

voici le Programme:
Pouvez-vous m'aider a trouver l'erreur dans le code ? S.V.P Merci


import java.util.Scanner; 
 
public class Sdz1 { 
 
    public static void main(String[] args) { 
        String note; 
        String resultat; 
        char reponse = 'O'; 
        double nbre1 = 0, nbre2 = 0; 
        Scanner sc = new Scanner(System.in); 
        While (reponse == 'O'); 
        { 
            System.out.println("Veulliez saisir votre note"); 
            resultat = sc.nextLine(); 
            System.out.println("Veulliez saisir le nombre décimal /?"); 
            note = sc.nextLine(); 
            nbre1 = resultat * 100; // l'erreur est ici 
            System.out.println("ta note en % est :" resultat / note); 
            System.out.println("Voulez-vous réessayer? (O/N)"); 
            reponse = sc.nextLine().charAt(0); 
        } 
 
        System.out.println("Au revoir..."); 
 
 
    } 
 
}

2 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
20 nov. 2015 à 20:50
Bonjour,

resultat
est un String, donc ce n'est pas un nombre, tu ne peux pas faire de multiplication si ce n'est pas un nombre...
1
que devrais-je faire pour prendre le chiffre Scanner et le multiplier ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
20 nov. 2015 à 21:01
Il faudrait qu'au lieu de lire un String tu lises un double

double note;
double resultat;
// ...
resultat = sc.nextDouble(); sc.nextLine();
note = sc.nextDouble(); sc.nextLine();
0
a oui j'avais pas penser merci !
0
il me donne pareil une erreur ?
Voila ce que j'ai mis:

package projet1;

import java.util.Scanner;

public class sdz1 {

    public static void main(String[] args) {
        char reponse = 'O';
        double nbre1 = 0, nbre2 = 0;
        double note;
        double resultat;
        Scanner sc = new Scanner(System.in);
        While (reponse == 'O');
        {
            System.out.println("Veulliez saisir votre note");
            resultat = sc.nextDouble(); sc.nextLine();
            System.out.println("Veulliez saisir le nombre décimal /?");
            note = sc.nextDouble(); sc.nextLine();
            nbre1 = resultat * 100;
            System.out.println("ta note en % est :" resultat / note);
            System.out.println("Voulez-vous réessayer? (O/N)");
            reponse = sc.nextLine().charAt(0);
        }
  
        System.out.println("Au revoir...");
  

    }

}
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
20 nov. 2015 à 21:26
Plusieurs erreurs :

1) Il ne faut pas écrire
While
mais
while
...
2) Il ne faut pas mettre de
;
après la condition
while (reponse == 'O');
car cela court-circuite la suite.
3)
"ta note en % est :" resultat / note
est mal écrit, il faut concaténer les différents éléments :
"ta note en % est :"+ (resultat / note)
.
4) Mathématiquement tes calculs sont faux.
0
comment je peu faire pour enregistrer mon programme en .Jar, pour y avoir accès partout, pas seulement sur la petite console :/


P.s: j'ai arranger mon programme:

import java.util.Scanner;

public class sdz1 {

public static void main(String[] args) {
char reponse = 'O';
double nbre1 = 0;
double nbre2 = 0;
double note;
double resultat;
Scanner sc = new Scanner(System.in);
while (reponse == 'O')
{
System.out.println("Veulliez saisir votre note");
resultat = sc.nextDouble(); sc.nextLine();
System.out.println("Veulliez saisir le nombre décimal /?");
note = sc.nextDouble(); sc.nextLine();
nbre1 = resultat * 100;
nbre2 = nbre1 / note;
System.out.println("ta note en % est :" + nbre2);
reponse = ' ';
while(reponse != 'O' && reponse != 'N')
{
System.out.println("Voulez-vous réessayer? (O/N)");
reponse = sc.nextLine().charAt(0);
}
}
System.out.println("Au revoir...");


}

}
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 20/11/2015 à 23:24
Même en l'enregistrant en .jar tu devras le lancer avec une console quand même.
Tout ce que tu as fait avec System.in et System.out ne peut s'utiliser qu'en console.
Donc je peux te dire comment le mettre en .jar, mais je pense que c'est une manipulation inutile vu que cela ne fera de toute façon pas ce que tu veux au final...
0
et bien. ça ne me dérange pas qu'il y a une fenêtre invite de commande qui ouvre ou autre, mais explique s'il te plait
0
Alors c'est quoi ta manipulation ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 nov. 2015 à 09:40
Dans ton cas, il faut créer un dossier avec ce contenu :

META-INF
MANIFEST.MF
projet1
sdz1.class

Le fichier MANIFEST.MF est un fichier texte avec ce contenu :

Manifest-Version: 1.0
Main-Class: projet1.sdz1


Remarque : ne pas oublier la ligne vide à la fin.

Ensuite tu créé un zip avec tout ça et tu changes l'extension en .jar

Pour le démarrer ensuite, tu ouvres une invite de commande et tu fais :

java -jar nomDeTonFichier.jar
0
pour le dossier que je doit crée, je fait que crée un dossier test et j'écrit ça

META-INF
MANIFEST.MF
projet1
sdz1.class

et apres je crée un autre dossier ou j'écrit ça:

Manifest-Version: 1.0
Main-Class: projet1.sdz1

puis finalement je crée un autre fichier text avec:

Java -jar nomDeTonFicher,jar

puis je le renomme en .Bat
0