Qunand est ce qu'il faut vider le buffer (Memoire tampon)
anaurel
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je ne sais quand il faut vider le buffer
J'ai écris un code qui saute des intructions lors de l'execution
je ne sais quand il faut vider le buffer
J'ai écris un code qui saute des intructions lors de l'execution
/** * Addition,Multiplication,Division entière et Modulo en base quelconque */ package Algebre; import java.util.Scanner; public class Operations { static Scanner sc=new Scanner(System.in); static String val="0123456789ABCDEF"; static int base; public static void main(String args[]) { afficher(); } public static void afficher() { String n1,n2; StringBuilder resultat; int operation; char op[]={'+','*','/','%'}; readBase(); // choix de la base n1=readValue("premier"); operation=operation(); n2=readValue("deuxieme"); resultat=calcul(toTen(n1),toTen(n2),operation); System.out.println(n1+" "+op[operation-1]+" "+n2+" = "+ resultat); sc.close(); } public static StringBuilder toBase(int n) { StringBuilder result=new StringBuilder(); do { result.append(n%base); n/=base; }while(n!=0); return result.reverse(); } public static int toTen(String chaine) { int valeur,i=1; valeur=val.indexOf(chaine.charAt(0)); while(i<chaine.length()) valeur+=base*valeur+val.indexOf(chaine.charAt(i++)); return valeur; } public static boolean checkValue(String valeur) { int i=0; String message; message=valeur+"ne peut être en base "+base; if(!valeur.matches("[0-9A-Z]+")) { System.out.println(message); return false; } while(i<valeur.length()) if(val.indexOf(valeur.charAt(i))>=base) { System.out.println(message); return false; } return true; } public static void readBase() { boolean faux=false; do { if(faux) System.out.println("Choisir une base valide"); System.out.println("Préciser la base"); base=sc.nextInt(); } while(faux=base<2 || base>16); } public static String readValue(String name) { String terme=new String(); sc.nextLine(); do { System.out.println("Entrer le "+name+" terme"); terme=sc.nextLine(); } while(!checkValue(terme)); sc.nextLine(); return terme; } public static int operation() { int op; do { System.out.println("Choisir une opération"); System.out.println("1-> +"); System.out.println("2-> *"); System.out.println("3-> %"); System.out.println("4-> /"); op=sc.nextInt(); } while(op<1 || op>4); sc.nextInt(); return op; } public static StringBuilder calcul(int a,int b,int op) { switch (op) { case 1: return toBase(a+b); case 2: return toBase(a+b); case 3: return toBase(a%b); default: return toBase(a/b); } } }
A voir également:
- Vider buffer
- Vider le cache d'une application - Guide
- Comment vider une clé usb - Guide
- Vider memoire iphone - Guide
- Comment vider l'absorbeur d'encre canon pixma - Forum Imprimante
- Vider corbeille whatsapp - Forum Gmail
Le mieux serait de ne faire que nextLine et gérer à la main la conversion en int.
Il serait d'ailleurs intéressant que tu gères la lecture des données dans des méthodes séparées pour pouvoir gérer tous tes cas une seule fois, un peu comme dans ta méthode operation()
Cela pourrait faire :
j'étais confronté à une situation pareille la semaine derniere et on m'avait demandé de faire
sc.nextLine(); sc est un objet Scanner
Ca avait marché
j'ai appliqué la meme chose mais le probleme se déplace