Donc le point de ce projet est le valider si l'utilisateur a entré un nombre 0-9 ou s'il a un nombre décimal. Il valide si c'est un nombre ou une lettre mais si l'utilisateur ne met rien, la boucle fonctionne toujours comme si c'était un nombre valide. Donc, bug 1: Les accès utilisateurs entrent avant d'entrer un nombre à virgule flottante valide et le script est toujours valide. Bug 2: L'utilisateur entre une période sans entrer de chiffres et le script est toujours valide.ascii compteur de table avec Java ne retournant null comme faux
package numbers;
/*
* Name: Joshua Trimm
* Date: 9-24-17
* class: CISP 1010
* Project: IsAValidNumber
*/
import java.util.Scanner;
public class IsAValidNumber
{
public static void main(String[] args)
{
//console input scanner
Scanner consoleInput = new Scanner(System.in);
//Prompt user for input
System.out.print("enter a valid number:");
String validat = consoleInput.nextLine();
//define boolean from method
boolean isTrue = NumberIsValid(validat);
//while loop
while(isTrue == true)
{
System.out.println(validat + " is a valid number. Please enter another value:");
validat = consoleInput.nextLine();
isTrue = NumberIsValid(validat);
}
//if it jumps out of the while because it is false run this
System.out.println(validat + " is not a valid number, bye");
consoleInput.close();
}
//setup a boolean method
public static boolean NumberIsValid(String value)
{
//define local variables
int period = 0;
boolean valid = true;
int length = value.length();
//run through the string
//check the numbers
for(int i = 0; i < length; i++)
{
char aChar = value.charAt(i);
// make sure it doesn't start with a space
if((int)aChar == 20)
{
valid =false;
break;
}
// check to make sure its is a int 0-9
else if((int)aChar < 48 || (int)aChar > 57)
{
if((int)aChar == 46)
{
period++;
}
else
{
valid = false;
break;
}
}
//make sure it doesn't have more than one period
if (period > 1)
{
valid = false;
break;
}
}
return valid;
}
}
Toute aide serait grandement appréciée! Merci d'avance.
Merci! Le correctif Bug # 2 fonctionne très bien. J'ai toujours un peu de mal aveC# 1. Quand dois-je vérifier dans l'entrée isEmpty()? Ces boucles me font boucler mon cerveau autour de lui-même! –
Ça n'a pas vraiment d'importance. Je voudrais simplement vérifier si l'entrée est vide après la ligne 'int length = value.length()'. – Flaom
Merci @Flaom. Je vais l'exécuter et voir ce qui se passe. –