Probleme de lecture
Résolu/Fermé
anaurel
Messages postés
38
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 38 Date d'inscription vendredi 26 mai 2017 Statut Membre Dernière intervention 12 janvier 2018 - 23 juin 2017 à 12:45
anaurel Messages postés 38 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 gmail - Guide
- Iptv erreur de lecture - Forum Vidéo/TV
- Un bloqueur de publicité empêche la lecture. veuillez le désactiver pour démarrer la vidéo - Astuces et Solutions
- Confirmation de lecture whatsapp - Guide
- Erreur de lecture reconnecter en 3s ✓ - Forum Vidéo/TV
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
38
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.