2010-06-28 110 views
0

好的,我正在处理一个简单的语句代码,只要输入匹配,即大写,它就可以正常工作。我发现它.UpperCase看起来很简单,但仍然没有骰子。 我的代码:将输入转换为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': 

感谢您的指导。

回答

2

toUpperCase方法是一个属于(至少)的StringCharacter UC,你不能执行它在原始char键入。尝试:

LG = Character.toUpperCase(LG); 

请参阅here为血淋淋的细节。尤其要注意关于完整的Unicode支持的缺点。您可能会更好地使用字符串,但您应该可以使用该示例代码,因为您只允许使用ABCDF。顺便问一下E发生了什么事?

而且,正如Ben在他的回答中正确地提到的那样,您应该打开变量来保存大写字符而不是原始字符。在我上面的行中,这仍然是LG,因为我看不到保留原文的理由。

+0

你们都摇滚。我敢肯定是Java的新手,当我得到一些新手时,魔鬼肯定处于细节之中。 程序用于将A关联到4.0,B到3.0等等。至于为什么有F,但没有E,我再次处于亏损状态。我的猜测是,E是Endearing或可能赋予(积极的东西),F是Flunking(听起来不太愉快),但是我的推理让我失望了。 LOL – jjason89 2010-06-28 03:40:20

+0

另一个注意事项:从http://math.hws.edu/javanotes/c3/s6.html 3.6.1: “switch语句允许您测试表达式的值,并根据该值跳转直接到switch语句中的某个位置,只能使用某些类型的表达式,表达式的值可以是基本整数类型int,short或byte之一,可以是原始的char类型。将在本节后面看到,它可以是一个enumuerated类型,特别是,表达式不能是一个字符串或一个实数。“ 这就是为什么我使用字符我离开基地? – jjason89 2010-06-28 03:48:10

+0

不,你说得对,你使用switch语句的基本整型。 – paxdiablo 2010-06-28 04:13:08

0

改变你的switch语句,而不是使用LG

switch(UC)