2012-01-22 8 views
6

Come ho detto prima, come posso verificare se il carattere immesso è uno dei parametri? Ho scritto questo codice, ma non sembra funzionare molto bene (o del tutto), nessun errore, comunque. Inoltre, ho bisogno di usare il codice base che ho usato qui. È per scuola e perdiamo punti se usiamo cose che non ci hanno insegnato (dannatamente scuola).Programma Java per verificare se un carattere è maiuscolo/minuscolo/numero/vocale

class doody 
{ 
    public static void main(String[] args) 
    { char i; 
    char input='D'; 

    for(i='A';i<='Z';i++)//check if uppercase 
    { 
     if(input==i){ 
      System.out.println("Uppercase"); 
      switch(input){ 
      case 'A': 
      case 'E': 
      case 'I': 
      case 'O': 
      case 'U': 
       System.out.println("Vowel"); break; 
      default: System.out.println("Not a vowel"); break;} 
      } 

     for(i='a';i<='z';i++)//check if lowercase 
     { 
      if(input==i){ 
       System.out.println("Lowercase"); 
       switch(input){ 
       case 'a': 
       case 'e': 
       case 'i': 
       case 'o': 
       case 'u': 
       System.out.println("Vowel"); break; 
       default: System.out.println("Not a vowel"); break; 
       }} 


     for(i='0';i<='9';i++)//check if number 
     { 
      if(input==i) 
       System.out.println("Number"); 
     } 

    } 

}}} 

Modifica: Ecco un codice che ho buttato insieme oggi. Molto più semplice Non so perché questo non mi è venuto in mente prima. Probabilmente era perché ero intontito, era tardi.

class doody 
{ 
public static void main(String[] args) 
{ 
    char input='$';//input here. 

    boolean lorn=false; 
    if(input>='a'&&input<='z') 
     {System.out.println("Lowercase"); 
      lorn=true; 
     if(input=='a')System.out.println("Vowel."); 
     if(input=='e')System.out.println("Vowel."); 
     if(input=='i')System.out.println("Vowel."); 
     if(input=='o')System.out.println("Vowel."); 
     if(input=='u')System.out.println("Vowel."); 
     } 

    if(input>='A'&&input<='Z') 
     {System.out.println("Uppercase"); 
      lorn=true; 
     if(input=='A')System.out.println("Vowel."); 
     if(input=='E')System.out.println("Vowel."); 
     if(input=='I')System.out.println("Vowel."); 
     if(input=='O')System.out.println("Vowel."); 
     if(input=='U')System.out.println("Vowel."); 
     } 

    if(input>='0'&&input<='9') 
     { 
      lorn=true; 
      System.out.println("Number"); 
     } 

    if(lorn==false)System.out.println("It is a special character"); 
} 
} 
+2

Si dovrebbe cercare di risolvere una parte di questo incarico in un momento piuttosto che tutti in una volta. Scomporlo in parti più piccole e risolvere ogni piccola domanda. Quindi, se rimani bloccato in un punto specifico, saremo più in grado di aiutarti. ** Modifica **: dove entra l'utente nel personaggio ?? –

+3

Si confondono maiuscole e minuscole. La maiuscola è A-Z, la minuscola è a-z. – Arjan

+2

Il tuo codice è molto difficile da leggere perché non è rientrato correttamente. Metti solo uno '}' per riga. –

risposta

0

Sembra che le lettere maiuscole e minuscole siano in primo piano. A-Z sarebbe superiore, a-z sarebbe inferiore. Anche se non esattamente efficiente - con l'eccezione del caso invertito, penso che dovrebbe essere emesso correttamente.

10

Non è necessario un ciclo for nel codice.

Ecco come è possibile ri implementare il metodo di

  • Se l'ingresso è compresa tra 'A' e 'Z' la sua maiuscola
  • Se l'ingresso è compresa tra 'a' e 'z' la sua minuscola
  • Se l'ingresso è uno 'a, e, i, o, u, a, e, I, O, U' sua vocale
  • resto Consonant

Edit:

Ecco suggerimento per voi di procedere, seguito frammento di codice dà int valori per char s

System.out.println("a="+(int)'a'); 
System.out.println("z="+(int)'z'); 
System.out.println("A="+(int)'A'); 
System.out.println("Z="+(int)'Z'); 

uscita

a=97 
z=122 
A=65 
Z=90 

Ecco come si può controllare se esiste un numero x tra due numeri dire a e b

// x greater than or equal to a and x less than or equal to b 
if (x >= a && x <= b) 

Durante i confronti char s possono essere trattati come numeri

Se è possibile combinare questi suggerimenti, si dovrebbe essere in grado di trovare ciò che si vuole;)

+0

Come faccio a testare se è tra A e Z? Io sono un noob Java, vedi. – Prnth

+0

Lo fai già: 'for (i = 'A'; i <= 'Z''.'i' inizia con' A', e il ciclo continua mentre i è inferiore a (o uguale a) 'Z'. –

+0

@ JB Capisco perché non vorrai confonderlo e mantenere il suo approccio, ma penso che dovremmo dire ai principianti i loro problemi evidenti e dare loro soluzioni migliori. Il [for-if anti pattern] (http://blogs.msdn.com/b/oldnewthing/archive/2011/12/27/10251210.aspx) non è qualcosa a cui anche i principianti dovrebbero abituarsi. – Voo

2

Alcuni commenti sul vostro codice

  • perché si desidera avere 2 cicli for come for(i='A';i<='Z';i++), se è possibile controllare questo con una semplice dichiarazione if ...si esegue un ciclo su tutta una serie, mentre si può semplicemente verificare se esso è contenuto in tale intervallo
  • anche quando hai trovato la tua risposta (ad esempio quando l'ingresso è A avrete il vostro risultato la prima volta che si accede al primo ciclo) è ancora un ciclo su tutto il resto
  • tua System.out.println("Lowercase"); economico (e la dichiarazione maiuscolo) vengono inseriti nel ciclo sbagliata
  • Se si è autorizzati ad utilizzarla, vi consiglio di guardare la classe Character che ha per esempio bello isUpperCase e isLowerCase metodi

lascio il resto a voi in quanto è compito

+0

Come si verifica se si trova in un intervallo? Devo usare una di quelle ... cose in serie? Grazie per la cosa "Sistema in uscita nel ciclo sbagliato". Lo aggiusterò ora. – Prnth

0

Questo non può essere quello che stai cercando, ma ho pensato che dovresti conoscere il vero modo per fare questo. Puoi utilizzare isUpperCase() della classe java.lang.Character per trovare informazioni sul caso del personaggio. È possibile utilizzare isDigit() per distinguere tra numeri e lettere (Questa è solo FYI :)). È quindi possibile fare un toUpperCase() e quindi fare lo switch per le vocali. Questo migliorerà la qualità del tuo codice.

+0

Lo so, ma non ci è stato insegnato a scuola. Dobbiamo attenerci a ciò che l'insegnante ci ha insegnato. Ho perso un sacco di voti negli esami per scrivere cose che l'insegnante non ci aveva insegnato. – Prnth

+0

quindi penso che dovresti usare 2 separati booleani per impostare le proprietà di maiuscole/minuscole e consonanti/vocali quindi fare una stampa basata su quei booleani – MozenRath

0

Questo è il vostro lavoro, in modo da assumere è necessario utilizzare i loop e passare statments. Questo è O.K, ma perché tutti i tuoi anelli sono interni a quelli privati?

Basta portarli fuori allo stesso "livello" e il codice è bene! (parte per il basso/alto mixup).

Un consiglio: premendo extra 'Invio' & 'Space' è gratis! (Questa è la prima cosa che ho fatto al codice, e il problema è diventato molto banale)

+0

Ottima idea, buon signore. Ora vado a letto, è tardi, ma ci lavorerò non appena torno da scuola domani, e metterò una versione aggiornata qui. – Prnth

9

Se non fosse un lavoro, è possibile utilizzare i metodi esistenti quali Character.isDigit(char), Character.isUpperCase(char) e Character.isLowerCase(char) che sono un po ' "più intelligente" , perché non funzionano solo in ASCII, ma anche in vari set di caratteri.

static final char[] VOWELS = { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' }; 

static boolean isVowel(char ch) { 
    for (char vowel : VOWELS) { 
     if (vowel == ch) { 
      return true; 
     } 
    } 
    return false; 
} 

static boolean isDigit(char ch) { 
    return ch >= '0' && ch <= '9'; 
} 

static boolean isLowerCase(char ch) { 
    return ch >= 'a' && ch <= 'z'; 
} 

static boolean isUpperCase(char ch) { 
    return ch >= 'A' && ch <= 'Z'; 
} 
4

In Java: class personaggio ha il metodo statico chiamato isLowerCase (char ch) ans isUpperCase (char ch), Character.isDigit (char ch) ti dà valore booleano, base su che si può facilmente raggiungere il vostro compito

esempio:

String abc = "HomePage";

char ch = abc.charAt(i); // here i= 1,2,3...... 

if(Character.isLowerCase(ch)) 
{ 
    // do something : ch is in lower case 
} 

if(Character.isUpperCase(ch)) 
{ 
    // do something : ch is in Upper case 
} 

if(Character.isDigit(ch)) 
{ 
    // do something : ch is in Number/Digit 
} 
0
Char input; 

if (input.matches("^[a-zA-Z]+$")) 
{ 
    if (Character.isLowerCase(input)) 
    { 
     // lowercase 
    } 
    else 
    { 
     // uppercase 
    } 

    if (input.matches("[^aeiouAEIOU]")) 
    { 
      // vowel 
    } 
    else 
    { 
     // consonant 
    } 
} 
else if (input.matches("^(0|[1-9][0-9]*)$")) 
{ 
     // number 
} 
else 
{ 
    // invalid 
} 
Problemi correlati