Probleme de lecture
Résolu/Fermé
anaurel
Messages postés
37
Date d'inscription
vendredi 26 mai 2017
Statut
Membre
Dernière intervention
12 janvier 2018
-
Modifié le 23 juin 2017 à 11:14
anaurel Messages postés 37 Date d'inscription vendredi 26 mai 2017 Statut Membre Dernière intervention 12 janvier 2018 - 23 juin 2017 à 12:45
anaurel Messages postés 37 Date d'inscription vendredi 26 mai 2017 Statut Membre Dernière intervention 12 janvier 2018 - 23 juin 2017 à 12:45
A voir également:
- Probleme de lecture
- Confirmation de lecture whatsapp - Guide
- Accusé de lecture gmail - Guide
- Lecture epub - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
- Accusé de lecture outlook - Guide
2 réponses
Felice_
Messages postés
265
Date d'inscription
mardi 25 avril 2017
Statut
Membre
Dernière intervention
20 juillet 2017
11
23 juin 2017 à 10:04
23 juin 2017 à 10:04
Bonjour anaurel,
Peux-tu commencer par mettre ton code entre les balises code ?
Peux-tu commencer par mettre ton code entre les balises code ?
anaurel
Messages postés
37
Date d'inscription
vendredi 26 mai 2017
Statut
Membre
Dernière intervention
12 janvier 2018
Modifié le 23 juin 2017 à 12:33
Modifié le 23 juin 2017 à 12:33
/** * Ce programme convertit un nombre lu au clavier d'une base en une autre toutes deux entrées au clavier * Author : Anatole Aurel HAGBE * Date: 22 June 2017 */ package test; import java.util.Scanner; public class Test { static String val= "0123456789ABCDEF"; static int decimal; static Scanner sc = new Scanner(System.in); public static void main(String argv[]) { affiche(); } public static void affiche() { // Cette méthode affiche le nombre converti int bInit,bFinal; String nombre=new String(); bInit=lectureBase("d'entrée"); // Lecture de la base d'entrée nombre=lectureNombre(bInit); // Lecture du nombre à convertir bFinal=lectureBase("de sortie"); // Lecture de la base de sortie toDecimal(nombre,bInit); // Conersion en base décimale System.out.println("("+ nombre +")base"+bInit +" donne ("+toBase(bFinal)+") en base" +bFinal ); } public static StringBuilder toBase(int bFinal) { // Cette méthode convertit du décimal en une base quelconque StringBuilder valeur=new StringBuilder(); do { valeur.append(val.charAt(decimal % bFinal)); decimal/=bFinal; } while(decimal!=0); return valeur.reverse(); } public static void toDecimal(String p,int base) { /*Cette méthode convertit en décimal */ int i=1; decimal=val.indexOf(p.charAt(0)); while(i<p.length()) decimal=decimal*base + val.indexOf(p.charAt(i++)); } public static boolean control(String nbre,int base) { // Cette méthode vérifie qu'un nombre est écrit dans une base int i=0; boolean faux= true; while(i< nbre.length()) if(base <= val.indexOf(nbre.charAt(i++))) { faux=false; break; } return faux; } public static int lectureBase(String chaine) { // Cette méthode permet de lire une base int base; boolean faux=false; do { if(faux) System.out.println("Veuillez entrer une base valide !!"); System.out.println("Entrer la base "+ chaine); base=sc.nextInt(); faux=(base >16 || base <2); } while(faux); sc.nextLine(); // Vider le flux de lecture return base; } public static String lectureNombre(int base) { // Cette méthode permet de lire le nombre à convertir String nbre=new String(); boolean faux=true; do { if(!faux) System.out.println("Veuillez entrer une donnée valide !!"); System.out.println("Entrer la valeur"); nbre=sc.nextLine(); faux= nbre.matches("[0-9A-Z]+"); if(!faux) continue; if(faux=!control(nbre,base)) System.out.println(nbre +" ne peut être en base "+base); }while(faux); return nbre; } }
23 juin 2017 à 11:17
23 juin 2017 à 12:45
23 juin 2017 à 12:03
En fait dans la méthode LectureBase , j'ai oublié de vider le flux d'entrée.
il faut juste un sc.nextLine() avant le return.