2010-06-28 3 views
0

Ok, je travaille sur un code de déclaration simple et cela fonctionne bien tant que l'entrée correspond, c.-à-d. Je l'ai trouvé à.UpperCase et il semble assez simple, mais toujours pas de dés. mon code:convertir l'entrée à UpperCase

public static void main(String[] args) { 
//public static char toUpperCase(char LG) // If I put this in, it gives me 'illegal start of expression' 

char LG; // Reads a value of type char. 
char UC; // Uppercase value of LG 

TextIO.putln("Enter the letter grade do you want converted to point value?"); 
TextIO.putln(); 
TextIO.putln("A, B, C, D, or F"); 

LG = TextIO.getlnChar(); 
UC = LG.toUpperCase(); //this errors out 'char cannot be dereferenced' 

switch (LG) { 
case 'A': 

Merci pour la direction.

Répondre

2

La méthode toUpperCase est l'un qui appartient à (au minimum) les String ou Charactercours, vous ne pouvez pas l'exécuter sur une char primitive tapez. Essayez:

LG = Character.toUpperCase(LG); 

Voir here pour les détails sordides. Notez en particulier les insuffisances par rapport au support Unicode complet. Vous mai être mieux d'utiliser des chaînes à la place, bien que vous devriez être d'accord avec cet exemple de code puisque vous autorisez seulement A, B, C, D et F. Qu'est-il arrivé à E d'ailleurs? Et, comme Ben l'a justement mentionné dans sa réponse, vous devriez activer la variable contenant le caractère majuscule plutôt que l'original. Dans ma ligne ci-dessus, c'est toujours LG puisque je vois peu de raisons de garder l'original.

+0

Vous êtes tous rock. Je suis un novice à Java et pendant que j'en reçois un peu, le diable est certainement dans les détails. Programme pour associer A à 4.0, B à 3.0 et ainsi de suite. Quant à savoir pourquoi il y a des F, mais pas d'E, je suis à nouveau perdu. Ma conjecture est que E est pour Endearing ou peut-être doté (choses positives) et F est pour Flunking (qui ne semble pas très agréable), mais mon raisonnement m'a laissé tomber une fois ou à. LOL – jjason89

+0

Une autre note: De http://math.hws.edu/javanotes/c3/s6.html 3.6.1: "Une instruction switch vous permet de tester la valeur d'une expression et, en fonction de cette valeur, de sauter directement à un emplacement dans l'instruction switch Seules les expressions de certains types peuvent être utilisées La valeur de l'expression peut être l'un des types d'entiers primitifs int, short ou byte, qui peut être le type de caractère primitif. nous verrons plus tard dans cette section, il peut s'agir d'un type énuméré, en particulier, l'expression ne peut pas être une chaîne ou un nombre réel. " Quelle est la raison pour laquelle j'ai utilisé char suis-je hors base? – jjason89

+0

Non, vous avez raison, vous utilisez les types intégrales primitifs pour les instructions switch. – paxdiablo

0

changer votre instruction switch à utiliser UC au lieu de LG

switch(UC)