2013-01-03 83 views
0

我正在分析一個開源的遊戲代碼,我不明白setDefaultSpecialChars()方法和setDefaultSmallAlphabet()。這些陳述fontCharTable[':']=1 + indexOf_Point;fontCharTable['a'+i] = indexOf_a + i;對我來說是新的。我不明白這個Java代碼(位圖字體)

import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 

public class GFont { 


public int[] fontCharTable = new int[256]; 

public void setFontCharTableDefaults(boolean specialChars) { 
    setDefaultSmallAlphabet(0); 
    setDefaultBigAlphabet(0); 
    setDefaultDigits(27); 
    if (specialChars) { 
     setDefaultSpecialChars(37); 
    } 
} 

public void setDefaultSpecialChars(int indexOf_Point) { 
    fontCharTable['.']=0 + indexOf_Point; 
    fontCharTable[':']=1 + indexOf_Point; 
    fontCharTable[',']=2 + indexOf_Point; 
    fontCharTable[';']=3 + indexOf_Point; 
    fontCharTable['?']=4 + indexOf_Point; 
    fontCharTable['!']=5 + indexOf_Point; 
    fontCharTable['(']=6 + indexOf_Point; 
    fontCharTable[')']=7 + indexOf_Point; 
    fontCharTable['+']=8 + indexOf_Point; 
    fontCharTable['-']=9 + indexOf_Point; 
    fontCharTable['*']=10 + indexOf_Point; 
    fontCharTable['/']=11 + indexOf_Point; 
    fontCharTable['=']=12 + indexOf_Point; 
    fontCharTable['\'']=13 + indexOf_Point; 
    fontCharTable['_']=14 + indexOf_Point; 
    fontCharTable['\\']=15 + indexOf_Point; 
    fontCharTable['#']=16 + indexOf_Point; 
    fontCharTable['[']=17 + indexOf_Point; 
    fontCharTable[']']=18 + indexOf_Point; 
    fontCharTable['@']=19 + indexOf_Point; 
    fontCharTable['ä']=20 + indexOf_Point; 
    fontCharTable['ö']=21 + indexOf_Point; 
    fontCharTable['ü']=22 + indexOf_Point; 
    fontCharTable['Ä']=fontCharTable['ä']; 
    fontCharTable['Ö']=fontCharTable['ö']; 
    fontCharTable['Ü']=fontCharTable['ü']; 
} 


public void setDefaultSmallAlphabet(int indexOf_a) { 
    for (i=0; i<26; i++) { 
     fontCharTable['a'+i] = indexOf_a + i; 
    } 
} 


} 

回答

2

這只是一個正常的數組元素賦值表達式 - 但使用隱式轉換從charint。所以藉此:

fontCharTable['+']=8 + indexOf_Point; 

現在認爲它是:

char indexAsChar = '+'; 
int indexAsInt = indexAsChar; // Use implicit conversion 
fontCharTable[indexAsInt] = 8 + indexOf_Point; 

的是,現在更清楚?

同樣這樣的:

for (i=0; i<26; i++) { 
    fontCharTable['a'+i] = indexOf_a + i; 
} 

可以寫成:

for (i=0; i<26; i++) { 
    int a = 'a'; 
    int index = a + i' 
    fontCharTable[index] = indexOf_a + i; 
} 
+0

是的,爲什麼它初始化數組值爲「8 + indexOf_Point」? – user1494517

+0

@ user1494517:大概這是程序員在地圖上想要的價值。我不能談論代碼的*意圖 - 只是它實際做了什麼。 –

1

它們可能看起來很奇怪,但他們所做的一切就是用字符索引。

如果你想看看他們在做什麼,你可以嘗試通過調試器中的代碼。

相關問題