IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

saisie un int obligatoirement avec Scanner


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 67
    Par défaut saisie un int obligatoirement avec Scanner
    bonjour, je code une classe en java pour saisir des notes, et je voudrai pouvoir redemander a l'utilisateur de ressaisir un nombre si par exemple il saisie des lettres a la place d'une note. merci
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    package tableau;
     
    import java.util.Scanner;
     
    public class tableauNote {
     
    	private int[] note; // variable d'instance crée un tableau de int
    	private Scanner sc;// variable d'instance crée un Scanner pour la saisie des
    						// notes
    	private String nom;
     
    	public tableauNote(String n, int x) {// constructeur qui crée un tableau
    		note = new int[x];
    		nom = n;
    	}
     
    	public void affiche() {// methode qui affiche le tableau
    		System.out.print(nom + ": ");
    		for (int i = 0; i < note.length; i++) {
    			System.out.print(note[i] + "|");
    		}
    		System.out.println();
    	}
     
    	public void saisirNote() {// methode qui permet de saisir des données dans
    								// le tableau
     
    		try {
    			sc = new Scanner(System.in);
    			System.out.println("saisir les notes");
    			for (int i = 0; i < note.length; i++) {
    				note[i] = sc.nextInt();
    			}
    		} catch (Exception e) {
    			sc.close();
    		}
    	}
     
    	public void calculMoyenne() {
    		double somme = 0.0;
    		for (int i = 0; i < note.length; i++) {
    			somme = somme + note[i];
    		}
    		double moyenne = somme / note.length;
    		System.out.println("moyenne: " + moyenne + "total: " + somme);
    		if (moyenne >= 10) {
    			System.out.println("admis");
    		} else {
    			System.out.println("non admis");
    		}
    	}
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Commence par faire une méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private int saisirUneNote(Scanner scanner)
    Qui s'occupera de demander à ce qu'une note soit saisie, et de redemander si ce n'est pas un nombre.
    Mais si tu ne sais pas entièrement comment le faire, fais le début, essaie de t'en servir et de le faire marcher dans le cas où l'utilisateur tape bien des nombres, puis observe ce qui se passe mal quand il tape autre chose.

    Viens ensuite nous montrer où tu en es arrivé, on aura d'autres conseils.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 67
    Par défaut
    a la fin du code il y a une methode qui rempli le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public void saisirNote() {// methode qui permet de saisir des données dans
    								// le tableau
     
    		try {
    			sc = new Scanner(System.in);
    			System.out.println("saisir les notes");
    			for (int i = 0; i < note.length; i++) {
    				note[i] = sc.nextInt();
    			}
    		} catch (Exception e) {
    			sc.close();
    		}
    	}
     
    	public void calculMoyenne() {
    		double somme = 0.0;
    		for (int i = 0; i < note.length; i++) {
    			somme = somme + note[i];
    		}
    		double moyenne = somme / note.length;
    		System.out.println("moyenne: " + moyenne + "total: " + somme);
    		if (moyenne >= 10) {
    			System.out.println("admis");
    		} else {
    			System.out.println("non admis");
    		}
    	}
    }
    cette methode fonctionne je que je voudrai c'est sécurisé la saisie pour evité de metttre aute chose que des nombres de type Int

    je met un exemple de creation issue de mon main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    package tableau;
    public class testTab {
     
    	public static  void main(String[] args) {
     
    		tableauNote t1 = new tableauNote("jean",2);
    		t1.affiche();
    		t1.saisirNote();
    		t1.affiche();
    		t1.calculMoyenne();
    je ne s'ai pas si j'ai bien fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void saisirNote2(Scanner sc){
    		try {
    			sc = new Scanner(System.in);
    			System.out.println("saisir les notes");
    			for (int i = 0; i < note.length; i++) {
    				note[i] = sc.nextInt();
    			}
    		} catch (Exception e) {
    			sc.close();
    		}
    	}
    mais quand je fais sa sa fait la meme chose en faite si je mais une lettre sa me mets un 0 dans le tableau

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Non, une note. Fais une méthode qui récupère une seule note. Pas remplir le tableau, une note, une, une seule.

    Et ta méthode qui remplit le tableau, se contente d'appeler la méthode qui récupère une note, autant de fois qu'il faut pour remplir le tableau.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 67
    Par défaut je crois que sa avance
    j'ai fait sa sa avance un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package testexo;
     
    import java.util.Scanner;
     
    public class test {
     
    	public void saisirNote(Scanner sc) {
    		try {
    			Scanner sc1 = new Scanner(System.in);
    			System.out.println("sasir note");
    			sc1.nextInt();
    			sc1.close();
    		} catch (Exception e) {
    			 System.out.println("Please use valid input.");
    		}
    	}
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		test t1 = new test();
    		t1.saisirNote(null);
    	}
     
    }

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 149
    Par défaut
    Pour faire ce que tu souhaite, je te conseille de faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int note;
    try{
    	Scanner sc1 = new Scanner(System.in);
    	System.out.println("Saisir note:");
    	note = Integer.parseInt( sc1.nextLine() ) );				
    } catch (NumberFormatException e){
    	System.out.println("Veuillez saisir un nombre entier!");
    	note = Integer.parseInt( sc1.nextLine() ) );
    }
    Il faut aussi que tu change quelque chose dans ton code. Quand tu appelle ta méthode, tu met null en argument. Il faut que tu y mette un scanner sinon ça ne fonctionnera pas! Pour cela, met ta déclaration de sc1 juste au dessus de ta méthode. Dans cette dernière, remplace tous les sc1 par sc.
    Pour finir, met sc1 en argument quand tu appelle ta méthode.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/03/2015, 11h17
  2. [AJAX] saisie automatique en rapport avec des données mysql
    Par redwire dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 01/10/2006, 11h45
  3. [XSLT]Convertir une chaîne en float, int etc ... avec XSL
    Par wozzz dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 19/05/2006, 10h12
  4. Réponses: 9
    Dernier message: 06/07/2005, 14h20
  5. tri obligatoire avec DISTINCT?
    Par Marseillais9 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 31/07/2003, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo