2016-10-19 4 views
-2

J'ai fait de l'exercice. Écrivez un programme Java qui amène l'utilisateur à fournir un seul caractère de l'alphabet. Imprimer la voyelle de Consonant, en fonction de l'entrée de l'utilisateur. Si l'entrée de l'utilisateur n'est pas une lettre (entre a et z ou A et Z), ou est une chaîne de longueur> 1, imprimez un message d'erreur. Et c'est une réponse:Ne doit pas input.charAt (0) retourner une chaîne? Pourquoi input.charAt (0)> = int fonctionne?

import java.util.Scanner; 
public class Exercise8 { 


    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 

     System.out.print("Input a alphabet: "); 
     String input = in.next().toLowerCase(); 

     boolean uppercase = input.charAt(0) >= 65 && input.charAt(0) <= 90; 
     boolean lowercase = input.charAt(0) >= 97 && input.charAt(0) <= 122; 
     boolean vowels = input.equals("a") || input.equals("e") || input.equals("i") 
       || input.equals("o") || input.equals("u"); 

     if (input.length() > 1) 
     { 
      System.out.println("Error. Not a single character."); 
     } 
     else if (!(uppercase || lowercase)) 
     { 
      System.out.println("Error. Not a letter. Enter uppercase or lowercase letter."); 
     } 
     else if (vowels) 
     { 
      System.out.println("Input letter is Vowel"); 
     } 
     else 
     {`enter code here` 
      System.out.println("Input letter is Consonant"); 
     } 
    } 
} 

Comment se fait que,

boolean uppercase = input.charAt(0) >= 65 && input.charAt(0) <= 90; 

œuvres? Ne devrait pas input.charAt() retourner une chaîne?

Aussi, pourquoi est-il pour la distinction majuscules et minuscules dans la seconde moitié d'un code si quelqu'un a utilisé

toLowerCase(); 

déjà?

+1

Pourquoi * should * 'charAt' retourner une chaîne? – chrylis

+0

lire à propos de acsii et char –

+0

'charAt()' retourne un 'char' qui, à mon avis, a du sens. – Magnilex

Répondre

0

Il semble que vous ayez à la fois la Question et la Réponse. Et vous devez savoir comment fonctionne charAt (0) en premier lieu, deuxièmement vous voulez savoir comment le code fonctionne réellement. Si vous vous demandez pourquoi votre question est downvoted, alors c'est la réponse.

SE n'est pas un site de révision de code. Si vous avez des doutes spécifiques sur le fonctionnement/workflow du code, alors c'est définitivement votre place. Même j'ai vécu la même situation lorsque j'ai commencé à utiliser SE pour la première fois. Ne vous inquiétez pas pour les downvotes, vous deviendrez un pro en posant des questions à travers l'expérience.

maintenant répondre à votre question:

La chaîne java méthode charAt() retourne une valeur char au numéro d'index donné . Le numéro d'index commence à 0.

Exemple:

public class Solution{ 
public static void main(String args[]){ 
String name="StackExchange"; 
char ch=name.charAt(4);//returns the char value at the 4th index 
System.out.println(ch); 
}} 

La sortie est k ..

Aussi, pourquoi est-il pour la distinction majuscules et minuscules dans la seconde moitié d'un code si quelqu'un a utilisé

toLowerCase();

C'est exactement la façon dont vous devriez vous abstenir d'utiliser dans SE ..

Il nous dit explicitement ce n'est pas votre code, et vous voulez que les gens ici pour vous enseigner la logique du code.

répondre Anyways à cette question de la vôtre est,

Oui, il est tout à fait inutile d'utiliser Majuscules, puisque vous avez converti toutes les lettres en minuscules, à l'étage d'entrée se

Peu Insights :

maintenant que vous avez compris la logique de ce code, essayez la même chose avec la mise en œuvre expressions régulières.

Tous les meilleurs.

0

Ne doit pas entrer.charAt (0) renvoie une chaîne?

n °

Il retourne un char. Vérifiez le javadoc.

Pourquoi input.charAt (0)> = int fonctionne?

Because charAt(0) renvoie un char et un char peuvent être comparés (en toute sécurité!) Avec un int. Cela dit, votre code ne fonctionne correctement que si le caractère d'entrée est constitué de caractères ASCII (7 bits). Il ne fonctionnera pas pour les caractères latins accentués, pour le grec ou le cyrilique ou l'arabe ou ... à peu près n'importe quoi d'autre. (OK, vous n'avez probablement réglé que le problème du traitement du texte ASCII, mais gardez cela à l'esprit dans les futures tâches de programmation.)

Et il y a d'autres bogues dans votre code, comme indiqué dans les commentaires.