题目
依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。
这道看似非常简单的题目,却潜藏着几个玄机。面试官通过这道题,考察学生在语法、语义、语用以及算法优化方面的能力。现实告诉我们,通过这一道题目,就可以淘汰85%的面试者。看似残酷的考察方式,却也体现出学生在基础知识、动手能力到思维能力上的差距。
比较low的写法:
<code>public class Demo{
\tpublic static void main(String[] args){
\t\tfor(int i=1;i<=100;i++){
\t\t\tif(i%3==0&&i%5==0){
\t\t\t\tSystem.out.println(i+"*#");
\t\t\t\t}else
\t\t\t\tif(i%3==0){
\t\t\t\t\tSystem.out.println(i+"*");
\t\t\t\t\t}else
\t\t\t\t\tif(i%5==0){
\t\t\t\t\tSystem.out.println(i+"#");
\t\t\t\t\t}
\t\t}
\t}
}/<code>
优化后:
<code>public class Demo{
\tpublic static void main(String[] args){
\t\tString result="";
\t\tfor(int i=1;i<=100;i++){
\t\t\tresult=i%3==0?"*":"";
\t\t\tresult+=i%5==0?"#":"";
\t\t\tif(!"".equals(result)){
\t\t\tSystem.out.println(i+result);
\t\t }
\t\t}
\t}
}/<code>
当然频繁的对字符串操作,我们应该使用Stringbuffer或Stringbuilder
閱讀更多 IT猿猿 的文章