2017-09-17 6 views
-1

Ok les gars donc j'utilise cette fonction de chaîne "charAT" pour stocker la variable charater à stocker dans char r. Mais nous savons que l'utilisateur peut entrer n'importe quoi. Lorsque l'utilisateur entre une valeur numérique comme 123 ou 5 ou tout ce que charAt stocke dans la variable char. L'exception aurait du venir mais ce n'est pas le cas. Comment la variable char est-elle capable de contenir une valeur numérique? Comment puis-je réparer cela? Je veux que "r" ne détienne que des valeurs char et que l'exception se produise si l'utilisateur saisit la valeur numérique.Chaîne de fonction "CharAt" stocker et afficher les valeurs numériques dans "char"

package string; 

import java.util.Scanner; 

public class Example 
{ 

Scanner s1; 
String str; 
char r; 

Example() 
{ 
    s1 = new Scanner(System.in); 
} 

void display() 
{ 
    while(true) 
    { 
    try { 

    System.out.println("Please enter the grade"); 
    str = s1.nextLine(); 
    r = str.charAt(0); 
    System.out.println("The grade is "+ r); 
    break; 
    } 
    catch(Exception e) 
    { 
     System.out.println("you have entered an invalid input. Please try again \n"); 
    } 
    } 
} 

public static void main(String[] args) 
{ 
    new Example().display(); 
} 
} 

Répondre

1

En Java la valeur de String et char peut également accepter des valeurs numériques. Donc, si vous entrez 123 en entrée, la chaîne sera "123" et le caractère sera 1. Si vous voulez seulement obtenir des alphabets en entrée, vous pouvez le faire en utilisant la méthode hasNext dans la classe Scanner de Java. Cela va utiliser un Regular Expression tel que [A-Za-z] pour s'assurer que seuls les alphabets peuvent être donnés en entrée.

while(true) 
{ 
    try 
    { 
     System.out.println("Please enter the grade"); 
     while (!s1.hasNext("[A-Za-z]+")) { 
      System.out.println("you have entered an invalid input. Please try again \n"); 
      s1.next(); 
     } 
     str = s1.next(); 
     r = str.charAt(0); 
     System.out.println("The grade is "+ r); 
     break; 
    } 
    catch (Exception e) 
    { 
     System.out.println("There was an exception \n"); 
    } 
} 
0

On dirait que vous devez vérifier si le caractère se situe dans une certaine plage ASCII:

ascii = (int) str.toLowerCase().charAt(0); 
if ((ascii >= (int) 'a') && (ascii <= (int) 'f')) { 
    // Valid! 
} else { 
    // Invalid! 
}