0
votes

Comment puis-je le valider afin que les 3 premiers chiffres varient 100-300 (inclus) et la deuxième plage de 3 chiffres 001-999 (inclus) dans le texte suivant

private boolean validateSno(double inSno) {
  //sno is the serial number


  int firstThree=(int)inSno;
  double secondThree=(inSno-firstThree)*1000;
  boolean same=false;
  double checkDigit=inSno*1000-(int)inSno;

  if(checkDigit>0.0)
  {
  same=false;
  }
  else 
  {
      if(firstThree>=100&&firstThree<=300)
      {
      if(secondThree>=001&&secondThree<=999)
      {
          same=true;
      }

      }
  }
  return same;
}
I need the result to be in form XXX.YYY but as it is a real number I am stuck on how to split the first 3 numbers and the second 3 numbers.
Each has its own validation requiredis there an easy way using mod/div or?

1 commentaires

Fondamentalement, la question demande simplement à valider le numéro de série (double) dans le formulaire xxx.yyy où les 3 premiers numéros (XXX) doivent être compris entre 100 et 300 (inclus) et les seconde 3 numéros (AAA) doivent être compris entre 001 et 999 (inclus)


3 Réponses :


0
votes

Par exemple Numéro 456.234

double number = 456.234;
double firstThree = (int)number; \\ output 456
double lastThree = (number * 1000 % 1000); \\ output 234


2 commentaires

Seul problème est que c'est un nombre réel. par exemple. 456.234


S'il vous plaît ajouter ce fait à la question.



0
votes

Vous pouvez envisager d'utiliser une chaîne et une classe StringTokenzerizer.

C'est un moyen délicat mais pas si mal. P>

import java.util.StringTokenizer;

public class TestAnyParser {

    public static void main(String[] args)
    {
        validateSno(456.234);
    }

    private static boolean validateSno(double inSno) {
        boolean isReal = false;

        String sInSno = String.valueOf(inSno);

        StringTokenizer stTok = new StringTokenizer(sInSno, ".");

        isReal = stTok.countTokens() == 2;


        if(isReal)
        {

            int realpart = Integer.parseInt(stTok.nextToken());
            int imgpart =  Integer.parseInt(stTok.nextToken());

            System.out.println(realpart + ": " + imgpart);
        }
        else
        {
            //do something part.
        }


        return true;
    }

}


0 commentaires

0
votes

Les suivantes utilisent la validation de chaîne avec une expression régulière pour vérifier que les numéros sont la longueur droite et dans la plage de droite xxx

notez le \\ d * " À la fin, cela doit également approuver une valeur comme 123.45600000001


0 commentaires