下面的程序用一个方法对字符进行了分类。这个程序会打印出什么呢?
public class Classifier {
public static void main(String[] args) {
System.out.println(
classify('n') + classify('+') + classify('2'));
}
static String classify(char ch) {
if ("0123456789".indexOf(ch) >= 0)
return "NUMERAL ";
if ("abcdefghijklmnopqrstuvwxyz".indexOf(ch) >= 0)
return "LETTER ";
/* (Operators not supported yet)
if ("+-*/&|!=" >= 0)
return "OPERATOR ";
*/
return "UNKNOWN";
}
}
如果你猜想该程序将打印LETTER UNKNOWN NUMERAL,那么你就掉进陷阱里面了。这个程序连编译都通不过。让我们再看一看相关的部分,这一次我们用语法高亮显示:
if ("abcdefghijklmnopqrstuvwxyz".indexOf(ch) >= 0) return "LETTER "; /* (Operators not supported yet) if ("+-*/&|!=" >= 0) return "OPERATOR "; */ return "UNKNOWN"; } }
/* Add the numbers from 1 to n */ int sum = 0; for (int i = 1; I <= n; i++) sum += i;
/* /* Add the numbers from 1 to n */ int sum = 0; for (int i = 1; I <= n; i++) sum += i; */
//code commented out with an if statement - doesn't always work! if (false) { /* Add the numbers from 1 to n */ int sum = 0; for (int i = 1; i <= n; i++) sum += i; }
//code commented out with an if statement - doesn't always work! // /* Add the numbers from 1 to n */ // int sum = 0; // for (int i = 1; i <= n; i++) // sum += i;