2010-06-28 107 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)