J'ai du mal à m'assurer que les doubles sont validés correctement dans mon programme. Un utilisateur peut entrer un montant à déposer dans le compte, ce qui devrait être un double (je sais, ce n'est pas ce que je devrais utiliser, mais cela fait partie des directives d'attribution). Théoriquement, l'utilisateur devrait être en mesure de déposer n'importe quel montant - pas seulement £ 30, mais dire, £ 15,23. Ceci est la validation que j'ai actuellement, qui permet les nombres, mais empêche l'entrée d'un arrêt complet, ce qui crée un certain nombre de problèmes.(devrait l'être) double validation simple
Voici le code que j'ai jusqu'à présent:
public static String getBalanceValidation()
{
//Allow user input capabilities
Scanner input = new Scanner (System.in);
//Declare variables needed for validation
double dblInput = 0; //dblInput is set as 0
String strNumber = ""; //strNumber is blank
boolean bolSuccessful, bolNumeric;
int intCount;
char charLetter;
do
{
//set bolSuccessful and bolNumeric as true
bolSuccessful = true;
bolNumeric = true;
try //try user input
{
System.out.println("Enter the balance to be deposited: "); //User prompt
strNumber = input.next(); //User input as string
dblInput = Double.parseDouble(strNumber) ; //String input converted to double
}// end of try
catch (NumberFormatException e) //NumberFormatException disallows letters or symbols in value
{
System.out.println("Deposit value cannot contain letters!"); //Error message
bolSuccessful = false; //set bolSuccessful as false
continue; //Return to try
}//end of number format catch
//create for loop which checks each character throughout the string
for (intCount = 0; intCount < strNumber.length(); intCount++)
{
charLetter = strNumber.charAt(intCount); //charLetter is the alphanumeric value of a character in the string at the point dictated by intCount
if (!(charLetter >= '0') && (charLetter <= '9') //if charLetter is not between 0 and 9
|| (charLetter == '.')) //or charLetter is not a full stop
{
bolNumeric = false; //Set bolNumeric as false
}//end of if construct
}//end of for loop
if (!bolNumeric) //if bolNumeric is false
{
System.out.println("Incorrect input format! The balance must be numbers only!"); //Error message
bolSuccessful = false; //Set bolSuccessful as false
}//end of if construct
}while (!bolSuccessful); //While bolSuccessful is false, return to top
return strNumber; //return strNumber to be used in main method
//end of do method
}//end of getBalanceValidation method
Je ne suis pas sûr que ce soit parce que je l'ai utilisé NumberFormatException (est-il quelque chose d'autre pour le double?)
Un grand merci
Définir 'un certain nombre de problèmes'. Vous ne savez pas si * quoi * est à cause de ...? Pas une vraie question. – EJP
Je déteste vraiment les commentaires qui me disent qu'une variable est définie sur 'true':' // set bolSuccessful et bolNumeric comme vrai' – Henrik
Je déteste les commentaires aussi - mais comme je l'ai dit, c'est pour une affectation. On m'a juste dit de commenter comme un fou. –