Tester si un nombre est un Double
1 - Créer une classe "Char.java" contenant les différentes variables utilisées :
public class Char {
public static final char SPACE = (char)32;
public static final char LOWER_N = (char)110;
public static final char LOWER_U = (char)117;
public static final char LOWER_L = (char)108;
public static final char DOT = (char)46;
public static final char COMMA = (char)44;
public static final int DIGIT_BEGIN = 48;
public static final int DIGIT_END = 57;
}
2 - Créer une classe "TestUtil.java" contenant les différentes fonctions utilisées :
public class TestUtil {
public static boolean isNull(String s) {
if (s == null) {
return true;
}
int counter = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == Char.SPACE) {
continue;
}
else if (counter > 3) {
return false;
}
if (counter == 0) {
if (c != Char.LOWER_N) {
return false;
}
}
else if (counter == 1) {
if (c != Char.LOWER_U) {
return false;
}
}
else if ((counter == 2) || (counter == 3)) {
if (c != Char.LOWER_L) {
return false;
}
}
counter++;
}
if ((counter == 0) || (counter == 4)) {
return true;
}
return false;
}
public static boolean isDouble(String number){
// On test si la valeur est nulle
if (isNull(number)) {
return false;
}
// On remplace les virgules par les points (séparateur décimal)
number = number.replace(Char.COMMA, Char.DOT);
boolean firstDot = true;
// On test chaque caractère
// Si le caractère est un chiffre on test le suivant
// Si le caractère est un "point" on initialise la variable "firstDot" à "false" et on test le suivant
// Si le caractère n'est pas un chiffre ou un autre "point" on retourne "false"
// Sinon, la valeur est un "Double" et on retourne "true"
for (char c : number.toCharArray()) {
if (!isDigit(c)) {
if (c == Char.SPACE) {
continue;
}
if(c == Char.DOT && firstDot){
firstDot = false;
continue;
} else {
return false;
}
}
}
return true;
}
public static boolean isDigit(char c) {
int x = c;
if ((x >= Char.DIGIT_BEGIN) && (x <= Char.DIGIT_END)) {
return true;
}
return false;
}
}
3 - Créer une classe "testDouble.java" afin de tester les différentes fonctions :
public class testDouble {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "12,5689";
System.out.println(TestUtil.isDouble(s)); // Renvoi true
s = "12.56456456";
System.out.println(TestUtil.isDouble(s)); // Renvoi true
s = null;
System.out.println(TestUtil.isDouble(s)); // Renvoi false
s = "a56456.5646";
System.out.println(TestUtil.isDouble(s)); // Renvoi false
s = "23156.86798,546";
System.out.println(TestUtil.isDouble(s)); // Renvoi false
s = "etet.ert47d6t";
System.out.println(TestUtil.isDouble(s)); // Renvoi false
s = "8989797";
System.out.println(TestUtil.isDouble(s)); // Renvoi true
s = "8989 797";
System.out.println(TestUtil.isDouble(s)); // Renvoi true
s = "89 897.97";
System.out.println(TestUtil.isDouble(s)); // Renvoi true
s = "89 897,97";
System.out.println(TestUtil.isDouble(s)); // Renvoi true
}
}
Ajouter un commentaire